services: app: build: context: . dockerfile: docker/Dockerfile environment: NODE_ENV: production ports: - "3000:3000" depends_on: mongodb: condition: service_healthy redis: condition: service_healthy healthcheck: test: - CMD - node - -e - "require('http').get('http://127.0.0.1:3000/', r => process.exit(r.statusCode < 500 ? 0 : 1)).on('error', () => process.exit(1))" interval: 10s timeout: 5s retries: 12 start_period: 30s mongodb: image: mongo:4.4.29 volumes: - mongodb-data:/data/db healthcheck: test: ["CMD", "mongo", "--quiet", "--eval", "db.adminCommand('ping').ok"] interval: 5s timeout: 5s retries: 20 redis: image: redis:7-alpine healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 20 volumes: mongodb-data: