90 lines
2.0 KiB
YAML
90 lines
2.0 KiB
YAML
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
|
|
- REDIS_HOST_PASSWORD=${REDIS_PASSWORD}
|
|
volumes:
|
|
- ${DATA_ROOT}/nextcloud/html:/var/www/html
|
|
- ${DATA_ROOT}/nextcloud/data:/var/www/html/data
|
|
networks:
|
|
- proxy
|
|
- nextcloud-internal
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost/status.php"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
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
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: nextcloud-redis
|
|
restart: unless-stopped
|
|
command: redis-server --requirepass ${REDIS_PASSWORD}
|
|
env_file: .env
|
|
networks:
|
|
- nextcloud-internal
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
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
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
networks:
|
|
proxy:
|
|
external: true
|
|
nextcloud-internal:
|
|
driver: bridge
|