version: '3' secrets: nextcloud_admin_password: file: ./nextcloud/nextcloud_admin_password nextcloud_admin_user: file: ./nextcloud/nextcloud_admin_user nextcloud_postgres_db: file: ./nextcloud/postgres_db nextcloud_postgres_password: file: ./nextcloud/postgres_password nextcloud_postgres_user: file: ./nextcloud/postgres_user nextcloud_redis_password: file: ./nextcloud/redis_password services: nextcloud_db: image: postgres:17.6-trixie env_file: - ./nextcloud/nextcloud.env shm_size: 128mb restart: always volumes: - /nassella/nextcloud/var-lib-postgresql-data:/var/lib/postgresql/data networks: - nextcloud_internal healthcheck: test: ["CMD-SHELL", "pg_isready -d `cat $$POSTGRES_DB_FILE` -U `cat $$POSTGRES_USER_FILE`"] start_period: 15s interval: 30s retries: 3 timeout: 5s secrets: - nextcloud_postgres_db - nextcloud_postgres_password - nextcloud_postgres_user nextcloud_redis: image: redis:8.2.1-bookworm env_file: - ./nextcloud/nextcloud.env command: bash -c 'redis-server --requirepass "$$(cat /run/secrets/nextcloud_redis_password)"' secrets: - nextcloud_redis_password restart: always healthcheck: test: ["CMD-SHELL", "redis-cli --no-auth-warning -a \"$$(cat /run/secrets/nextcloud_redis_password)\" ping | grep PONG"] start_period: 10s interval: 30s retries: 3 timeout: 3s networks: - nextcloud_internal nextcloud: image: nextcloud:31.0.8-apache depends_on: nextcloud_redis: condition: service_healthy nextcloud_db: condition: service_healthy env_file: - ./nextcloud/nextcloud.env secrets: - nextcloud_postgres_db - nextcloud_postgres_password - nextcloud_postgres_user - nextcloud_admin_user - nextcloud_admin_password - nextcloud_redis_password networks: - lb - nextcloud_internal volumes: - /nassella/nextcloud/var-www-html:/var/www/html restart: unless-stopped networks: lb: nextcloud_internal: driver: bridge internal: true