services: db: image: postgres:16-alpine environment: POSTGRES_DB: nextcloud POSTGRES_USER: nextcloud POSTGRES_PASSWORD: nextcloud healthcheck: test: ["CMD-SHELL", "pg_isready -U nextcloud -d nextcloud"] interval: 5s timeout: 5s retries: 12 volumes: - postgres-data:/var/lib/postgresql/data redis: image: redis:7-alpine command: ["redis-server", "--appendonly", "yes"] healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 12 volumes: - redis-data:/data control-plane: build: context: ../.. dockerfile: apps/control-plane/Dockerfile environment: PORT: 3000 BETTERNAS_VERSION: ${BETTERNAS_VERSION} NEXTCLOUD_BASE_URL: ${NEXTCLOUD_BASE_URL} BETTERNAS_CONTROL_PLANE_STATE_PATH: /var/lib/betternas/control-plane/state.json BETTERNAS_CONTROL_PLANE_CLIENT_TOKEN: ${BETTERNAS_CONTROL_PLANE_CLIENT_TOKEN} BETTERNAS_CONTROL_PLANE_NODE_BOOTSTRAP_TOKEN: ${BETTERNAS_CONTROL_PLANE_NODE_BOOTSTRAP_TOKEN} BETTERNAS_EXAMPLE_MOUNT_URL: ${BETTERNAS_EXAMPLE_MOUNT_URL} BETTERNAS_NODE_DIRECT_ADDRESS: ${BETTERNAS_NODE_DIRECT_ADDRESS} ports: - "${BETTERNAS_CONTROL_PLANE_PORT}:3000" volumes: - control-plane-data:/var/lib/betternas/control-plane healthcheck: test: ["CMD-SHELL", "wget -q -O /dev/null http://127.0.0.1:3000/health"] interval: 5s timeout: 5s retries: 12 node-agent: build: context: ../.. dockerfile: apps/node-agent/Dockerfile environment: PORT: 8090 BETTERNAS_EXPORT_PATH: /data/export ports: - "${BETTERNAS_NODE_AGENT_PORT}:8090" healthcheck: test: ["CMD-SHELL", "wget -q -O /dev/null http://127.0.0.1:8090/health"] interval: 5s timeout: 5s retries: 12 volumes: - ${BETTERNAS_EXPORT_PATH}:/data/export nextcloud: image: nextcloud:31-apache depends_on: db: condition: service_healthy redis: condition: service_healthy control-plane: condition: service_healthy node-agent: condition: service_healthy environment: POSTGRES_HOST: db POSTGRES_DB: nextcloud POSTGRES_USER: nextcloud POSTGRES_PASSWORD: nextcloud REDIS_HOST: redis BETTERNAS_CONTROL_PLANE_URL: http://control-plane:3000 BETTERNAS_CONTROL_PLANE_API_TOKEN: ${BETTERNAS_CONTROL_PLANE_CLIENT_TOKEN} ports: - "${BETTERNAS_NEXTCLOUD_PORT}:80" volumes: - nextcloud-data:/var/www/html - nextcloud-custom-apps:/var/www/html/custom_apps volumes: control-plane-data: nextcloud-data: nextcloud-custom-apps: postgres-data: redis-data: