# docker-compose.yml version: '3.8' services: platform-api: build: . ports: - "8080:8080" environment: - REDIS_URL=redis://redis:6379 - LOG_LEVEL=INFO depends_on: - redis volumes: - ./logs:/app/logs restart: unless-stopped deploy: replicas: 3 resources: limits: cpus: '2.0' memory: 2G reservations: cpus: '1.0' memory: 1G redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis-data:/data command: redis-server --appendonly yes prometheus: image: prom/prometheus:latest ports: - "9090:9090" volumes: - ./deployment/monitoring/prometheus.yml:/etc/prometheus/prometheus.yml - prometheus-data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' grafana: image: grafana/grafana:latest ports: - "3000:3000" environment: - GF_SECURITY_ADMIN_PASSWORD=admin - GF_USERS_ALLOW_SIGN_UP=false volumes: - grafana-data:/var/lib/grafana - ./deployment/monitoring/grafana/dashboards:/etc/grafana/provisioning/dashboards - ./deployment/monitoring/grafana/datasources:/etc/grafana/provisioning/datasources depends_on: - prometheus nginx: image: nginx:alpine ports: - "80:80" - "443:443" volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./ssl:/etc/nginx/ssl depends_on: - platform-api volumes: redis-data: prometheus-data: grafana-data: