services: nextcloud: image: nextcloud:29-apache container_name: nextcloud restart: unless-stopped depends_on: postgres: condition: service_healthy redis: condition: service_started env_file: .env environment: - POSTGRES_HOST=postgres - REDIS_HOST=redis volumes: - ${DATA_ROOT}/nextcloud/html:/var/www/html - ${DATA_ROOT}/nextcloud/data:/var/www/html/data networks: - proxy - nextcloud-internal postgres: image: postgres:16-alpine container_name: nextcloud-postgres restart: unless-stopped env_file: .env volumes: - ${DATA_ROOT}/nextcloud/db:/var/lib/postgresql/data networks: - nextcloud-internal healthcheck: test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: nextcloud-redis restart: unless-stopped networks: - nextcloud-internal cron: image: nextcloud:29-apache container_name: nextcloud-cron restart: unless-stopped depends_on: - nextcloud entrypoint: /cron.sh volumes: - ${DATA_ROOT}/nextcloud/html:/var/www/html - ${DATA_ROOT}/nextcloud/data:/var/www/html/data networks: - nextcloud-internal networks: proxy: external: true nextcloud-internal: driver: bridge