services: redis: image: redis:8 restart: unless-stopped volumes: - redis_data:/data healthcheck: test: - CMD - redis-cli - ping interval: 10s timeout: 5s retries: 5 mongo: image: mongo:8 restart: unless-stopped volumes: - mongo_data:/data/db healthcheck: test: - CMD - mongosh - --quiet - --eval - "db.adminCommand('ping')" interval: 10s timeout: 5s retries: 5 guacd: image: docker.io/guacamole/guacd:1.6.0 restart: unless-stopped ports: - 4822:4822 server: image: gitea.hostxtra.co.uk/vantage/vantage-app/server:latest restart: unless-stopped ports: - 8080:8080 - 9090:9090 environment: MONGO_URI: ${MONGO_URI:-mongodb://mongo:27017/vantage} REDIS_ADDR: redis:6379 GRPC_HOST: ${GRPC_HOST} GRPC_PORT: "9090" HTTP_PORT: "8080" KEY_ENCRYPTION_KEY: ${KEY_ENCRYPTION_KEY:-} GUACD_ADDR: guacd:4822 PROXY_ADVERTISE_HOST: server TRUSTED_PROXIES: ${TRUSTED_PROXIES:-10.0.0.0/8,172.16.0.0/12,192.168.0.0/16} depends_on: redis: condition: service_healthy mongo: condition: service_healthy volumes: - ./data:/data web: image: gitea.hostxtra.co.uk/vantage/vantage-app/web:latest restart: unless-stopped ports: - 3000:3000 # No API_URL: web proxies nothing. The nginx service below routes # /api, /auth, /public, /install*, /update* to server:8080 and # everything else to web:3000. Reaching web:3000 directly serves the # UI and every API call 404s. depends_on: - server nginx: image: nginx:1.29-alpine restart: unless-stopped ports: - ${NGINX_HTTP_PORT:-80}:80 volumes: - ./nginx/vantage.conf:/etc/nginx/conf.d/default.conf:ro depends_on: - server - web volumes: mongo_data: null redis_data: null networks: {}