services: postgres: image: postgres:15-alpine container_name: sentiment-api-postgres environment: POSTGRES_DB: sentiment POSTGRES_USER: user POSTGRES_PASSWORD: pass ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U user -d sentiment"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: sentiment-api-redis ports: - "6379:6379" # Redis default port healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 3s retries: 5 command: redis-server --maxmemory 256mb --maxmemory-policy allkeys-lru nginx: image: nginx:alpine container_name: sentiment-api-nginx ports: - "80:80" volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro depends_on: - api api: build: . container_name: sentiment-api ports: - "8000:8000" environment: DATABASE_URL: postgresql://user:pass@postgres:5432/sentiment REDIS_URL: redis://redis:6379 # ← ADD THIS LINE depends_on: postgres: condition: service_healthy redis: # ← ADD THIS condition: service_healthy command: uvicorn src.main:app --host 0.0.0.0 --port 8000 volumes: postgres_data: