| # ScamShield AI - Docker Compose Configuration | |
| # For local development and testing | |
| version: '3.8' | |
| services: | |
| # ===================================================== | |
| # ScamShield AI API | |
| # ===================================================== | |
| api: | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| container_name: scamshield-api | |
| # Map host port 8000 to container port 7860 (Dockerfile uses 7860) | |
| ports: | |
| - "8000:7860" | |
| environment: | |
| - ENVIRONMENT=development | |
| - DEBUG=true | |
| - LOG_LEVEL=INFO | |
| - API_PORT=7860 | |
| - GROQ_API_KEY=${GROQ_API_KEY} | |
| - POSTGRES_URL=postgresql://scamshield:password@postgres:5432/scamshield | |
| - REDIS_URL=redis://redis:6379/0 | |
| depends_on: | |
| postgres: | |
| condition: service_healthy | |
| redis: | |
| condition: service_healthy | |
| volumes: | |
| - ./app:/app/app:ro # Mount app for development | |
| networks: | |
| - scamshield-network | |
| restart: unless-stopped | |
| # ===================================================== | |
| # PostgreSQL Database | |
| # ===================================================== | |
| postgres: | |
| image: postgres:15-alpine | |
| container_name: scamshield-postgres | |
| environment: | |
| - POSTGRES_USER=scamshield | |
| - POSTGRES_PASSWORD=password | |
| - POSTGRES_DB=scamshield | |
| ports: | |
| - "5432:5432" | |
| volumes: | |
| - postgres_data:/var/lib/postgresql/data | |
| healthcheck: | |
| test: ["CMD-SHELL", "pg_isready -U scamshield"] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 5 | |
| networks: | |
| - scamshield-network | |
| restart: unless-stopped | |
| # ===================================================== | |
| # Redis Cache | |
| # ===================================================== | |
| redis: | |
| image: redis:7-alpine | |
| container_name: scamshield-redis | |
| ports: | |
| - "6379:6379" | |
| volumes: | |
| - redis_data:/data | |
| healthcheck: | |
| test: ["CMD", "redis-cli", "ping"] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 5 | |
| networks: | |
| - scamshield-network | |
| restart: unless-stopped | |
| # ===================================================== | |
| # Networks | |
| # ===================================================== | |
| networks: | |
| scamshield-network: | |
| driver: bridge | |
| # ===================================================== | |
| # Volumes | |
| # ===================================================== | |
| volumes: | |
| postgres_data: | |
| redis_data: | |