| version: '3.8' | |
| services: | |
| sentiment-analysis: | |
| build: . | |
| container_name: advanced-sentiment-analysis | |
| ports: | |
| - "8888:8000" | |
| environment: | |
| - OPENAI_API_KEY=${OPENAI_API_KEY} | |
| - ENVIRONMENT=production | |
| - MAX_CONCURRENT_REQUESTS=100 | |
| - RATE_LIMIT_REQUESTS_PER_MINUTE=1000 | |
| volumes: | |
| - ./data:/app/data | |
| - ./logs:/app/logs | |
| env_file: | |
| - .env | |
| restart: unless-stopped | |
| healthcheck: | |
| test: ["CMD", "curl", "-f", "http://localhost:8000/health"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 3 | |
| start_period: 60s | |
| redis: | |
| image: redis:7-alpine | |
| container_name: sentiment-redis | |
| ports: | |
| - "6379:6379" | |
| volumes: | |
| - redis_data:/data | |
| restart: unless-stopped | |
| command: redis-server --appendonly yes | |
| prometheus: | |
| image: prom/prometheus:latest | |
| container_name: sentiment-prometheus | |
| ports: | |
| - "9090:9090" | |
| volumes: | |
| - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml | |
| - prometheus_data:/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' | |
| restart: unless-stopped | |
| grafana: | |
| image: grafana/grafana:latest | |
| container_name: sentiment-grafana | |
| ports: | |
| - "3000:3000" | |
| environment: | |
| - GF_SECURITY_ADMIN_PASSWORD=admin | |
| volumes: | |
| - grafana_data:/var/lib/grafana | |
| - ./monitoring/grafana:/etc/grafana/provisioning | |
| restart: unless-stopped | |
| volumes: | |
| redis_data: | |
| prometheus_data: | |
| grafana_data: | |
| networks: | |
| default: | |
| name: sentiment-analysis-network |