services: nextcloud_db: image: docker.io/library/postgres:17.5 container_name: nextcloud_db environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${POSTGRES_DB} volumes: - ${APPDATA_PATH}/nextcloud/db:/var/lib/postgresql/data ports: - ${DB_PORT}:5432 networks: - backend restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -d ${POSTGRES_DB} -U ${POSTGRES_USER}"] start_period: 10s interval: 10s timeout: 5s retries: 3 nextcloud_valkey: image: docker.io/valkey/valkey:8.1.3 container_name: nextcloud_valkey command: valkey-server --save 60 1 --requirepass ${VALKEY_PASSWORD} volumes: - ${APPDATA_PATH}/nextcloud/valkey:/data ports: - ${VALKEY_PORT}:6379 networks: - backend restart: unless-stopped healthcheck: test: ["CMD-SHELL", "echo 'auth ${VALKEY_PASSWORD}\nping' | valkey-cli | grep PONG"] start_period: 20s interval: 30s retries: 5 timeout: 3s nextcloud_app: image: docker.io/library/nextcloud:31.0.6 container_name: nextcloud_app depends_on: nextcloud_db: condition: service_healthy nextcloud_valkey: condition: service_healthy environment: - POSTGRES_HOST=nextcloud_db:5432 - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - REDIS_HOST=nextcloud_valkey - REDIS_HOST_PORT=6379 - REDIS_HOST_PASSWORD=${VALKEY_PASSWORD} - PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT} - PHP_UPLOAD_LIMIT=${PHP_UPLOAD_LIMIT} - APACHE_DISABLE_REWRITE_IP=${APACHE_DISABLE_REWRITE_IP} volumes: - ${APPDATA_PATH}/nextcloud/app:/var/www/html ports: - ${APP_PORT}:80 networks: - frontend - backend restart: unless-stopped nextcloud_cron: image: docker.io/library/nextcloud:31.0.6 container_name: nextcloud_cron depends_on: - nextcloud_app entrypoint: /cron.sh environment: - POSTGRES_HOST=nextcloud_db:5432 - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - REDIS_HOST=nextcloud_valkey - REDIS_HOST_PORT=6379 - REDIS_HOST_PASSWORD=${VALKEY_PASSWORD} - PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT} - PHP_UPLOAD_LIMIT=${PHP_UPLOAD_LIMIT} - APACHE_DISABLE_REWRITE_IP=${APACHE_DISABLE_REWRITE_IP} volumes: - ${APPDATA_PATH}/nextcloud/app:/var/www/html networks: - frontend - backend restart: unless-stopped networks: frontend: external: true backend: external: true