version: '3.7' services: app: build: . command: uvicorn app.api:app --reload --host 0.0.0.0 --port 8000 container_name: "app" ports: - 8001:8000 volumes: - .:/home/user/app environment: - PYTHONPATH=/home/user/app depends_on: - prometheus app2: build: . command: uvicorn app.api:app --reload --host 0.0.0.0 --port 8000 container_name: "app2" ports: - 8002:8000 volumes: - .:/home/user/app environment: - PYTHONPATH=/home/user/app depends_on: - prometheus nginx: image: nginx:latest container_name: "nginx" ports: - "8080:8080" volumes: - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf depends_on: - app - app2 prometheus: image: prom/prometheus container_name: prometheus volumes: - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml ports: - "9090:9090" grafana: image: grafana/grafana container_name: grafana ports: - "3000:3000" environment: - GF_SECURITY_ADMIN_PASSWORD=admin depends_on: - prometheus tests: build: context: . dockerfile: Dockerfile.Test volumes: - .:/home/user/app environment: - PYTHONPATH=/home/user/app depends_on: - app command: pytest tests