version: '3.8' services: wifi-densepose: build: context: . dockerfile: Dockerfile target: development container_name: wifi-densepose-dev ports: - "8000:8000" volumes: - .:/app - wifi_densepose_logs:/app/logs - wifi_densepose_data:/app/data - wifi_densepose_models:/app/models environment: - ENVIRONMENT=development - DEBUG=true - LOG_LEVEL=debug - RELOAD=true - ENABLE_TEST_ENDPOINTS=true - ENABLE_AUTHENTICATION=false - ENABLE_RATE_LIMITING=false - DATABASE_URL=postgresql://wifi_user:wifi_pass@postgres:5432/wifi_densepose - REDIS_URL=redis://redis:6379/0 depends_on: - postgres - redis networks: - wifi-densepose-network restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s postgres: image: postgres:15-alpine container_name: wifi-densepose-postgres environment: - POSTGRES_DB=wifi_densepose - POSTGRES_USER=wifi_user - POSTGRES_PASSWORD=wifi_pass volumes: - postgres_data:/var/lib/postgresql/data - ./scripts/init-db.sql:/docker-entrypoint-initdb.d/init-db.sql ports: - "5432:5432" networks: - wifi-densepose-network restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U wifi_user -d wifi_densepose"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: wifi-densepose-redis command: redis-server --appendonly yes --requirepass redis_pass volumes: - redis_data:/data ports: - "6379:6379" networks: - wifi-densepose-network restart: unless-stopped healthcheck: test: ["CMD", "redis-cli", "--raw", "incr", "ping"] interval: 10s timeout: 3s retries: 5 prometheus: image: prom/prometheus:latest container_name: wifi-densepose-prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/etc/prometheus/console_libraries' - '--web.console.templates=/etc/prometheus/consoles' - '--storage.tsdb.retention.time=200h' - '--web.enable-lifecycle' volumes: - ./monitoring/prometheus-config.yml:/etc/prometheus/prometheus.yml - prometheus_data:/prometheus ports: - "9090:9090" networks: - wifi-densepose-network restart: unless-stopped grafana: image: grafana/grafana:latest container_name: wifi-densepose-grafana environment: - GF_SECURITY_ADMIN_PASSWORD=admin - GF_USERS_ALLOW_SIGN_UP=false volumes: - grafana_data:/var/lib/grafana - ./monitoring/grafana-dashboard.json:/etc/grafana/provisioning/dashboards/dashboard.json - ./monitoring/grafana-datasources.yml:/etc/grafana/provisioning/datasources/datasources.yml ports: - "3000:3000" networks: - wifi-densepose-network restart: unless-stopped depends_on: - prometheus nginx: image: nginx:alpine container_name: wifi-densepose-nginx volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf - ./nginx/ssl:/etc/nginx/ssl ports: - "80:80" - "443:443" networks: - wifi-densepose-network restart: unless-stopped depends_on: - wifi-densepose volumes: postgres_data: redis_data: prometheus_data: grafana_data: wifi_densepose_logs: wifi_densepose_data: wifi_densepose_models: networks: wifi-densepose-network: driver: bridge