x-volumes-default: &volumes volumes: - nextcloud:/var/www/html - nextcloud_data:/var/www/html/data - nextcloud_config:/var/www/html/config - nextcloud_custom_apps:/var/www/html/custom_apps version: '3' services: redis: image: redis:alpine restart: always app: image: nextcloud:${NEXTCLOUD_VERSION} restart: always <<: *volumes environment: - MYSQL_DATABASE=${MYSQL_DATABASE} - MYSQL_USER=${MYSQL_USER} - MYSQL_PASSWORD=${MYSQL_PASSWORD} - MYSQL_HOST=db - NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD} - NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER} - NEXTCLOUD_TRUSTED_DOMAINS=${APP_HOST} - TRUSTED_PROXIES=172.16.0.0/16 - OVERWRITECLIURL=https://${APP_HOST} - OVERWRITEHOST=${APP_HOST} - OVERWRITEPROTOCOL=https - NEXTCLOUD_UPDATE=1 - REDIS_HOST=redis - REDIS_HOST_PORT=6379 - SMTP_HOST - MAIL_FROM_ADDRESS - MAIL_DOMAIN - SMTP_PORT - SMTP_SECURE - SMTP_NAME - SMTP_LOGIN - SMTP_PASSWORD - SMTP_AUTHTYPE depends_on: - redis labels: - traefik.enable=true - traefik.docker.network=traefik_web - traefik.http.routers.${ROUTER_NAME}-router.entrypoints=${ENTRYPOINT} - traefik.http.routers.${ROUTER_NAME}-router.rule=Host(`${APP_HOST}`) - traefik.http.routers.${ROUTER_NAME}-router.tls=true networks: - default - traefik_web db: image: mariadb:${MARIADB_VERSION} restart: always command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW volumes: - nextcloud_db:/var/lib/mysql networks: - default environment: - MYSQL_ROOT_PASSWORD - MYSQL_PASSWORD - MYSQL_DATABASE - MYSQL_USER cron: image: nextcloud:${NEXTCLOUD_VERSION:-latest} restart: always <<: *volumes entrypoint: /cron.sh depends_on: - redis volumes: nextcloud_db: nextcloud: nextcloud_data: nextcloud_config: nextcloud_custom_apps: