version: '3' networks: frontend: external: true backend: external: true services: db: container_name: nextcloud-db image: postgres:alpine restart: always volumes: - /docker/nextcloud-db:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD= #REWRITE - POSTGRES_DB= #REWRITE - POSTGRES_USER= #REWRITE networks: - backend redis: container_name: nextcloud-redis image: redis:alpine restart: always networks: - backend app: container_name: nextcloud image: nextcloud:stable-apache restart: always #ports: # - 80:80 # - 443:443 volumes: - /docker/nextcloud:/var/www/html - /path/to/data:/var/www/html/data #REWRITE environment: - POSTGRES_HOST=nextcloud-db - REDIS_HOST=nextcloud-redis - POSTGRES_PASSWORD= #REWRITE - POSTGRES_DB= #REWRITE - POSTGRES_USER= #REWRITE - PHP_MEMORY_LIMIT=1024M - PHP_UPLOAD_LIMIT=0M - NEXTCLOUD_TRUSTED_DOMAINS= #REWRITE - TRUSTED_PROXIES= #REWRITE - APACHE_BODY_LIMIT=0 - OVERWRITEHOST= #REWRITE - OVERWRITEPROTOCOL=https - OVERWRITECLIURL=https:// #REWRITE depends_on: - db - redis networks: # THE ORDER IS NOT CHANGEABLE!! - frontend - backend cron: image: nextcloud:stable-apache container_name: nextcloud-cron restart: always volumes: - /docker/nextcloud:/var/www/html:z - /path/to/data:/var/www/html/data:z #REWRITE # NOTE: The `volumes` config of the `cron` and `app` containers must match entrypoint: /cron.sh depends_on: - db - redis networks: - backend