| version: '3.8' | |
| services: | |
| # PostgreSQL Database | |
| db: | |
| image: postgres:15-alpine | |
| container_name: goxy-ml-db | |
| environment: | |
| POSTGRES_USER: goxy_user | |
| POSTGRES_PASSWORD: goxy_password | |
| POSTGRES_DB: goxy_ml_db | |
| ports: | |
| - "5432:5432" | |
| volumes: | |
| - postgres_data:/var/lib/postgresql/data | |
| healthcheck: | |
| test: [ "CMD-SHELL", "pg_isready -U goxy_user" ] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 5 | |
| networks: | |
| - goxy-network | |
| # Redis Cache | |
| redis: | |
| image: redis:7-alpine | |
| container_name: goxy-ml-redis | |
| ports: | |
| - "6379:6379" | |
| volumes: | |
| - redis_data:/data | |
| healthcheck: | |
| test: [ "CMD", "redis-cli", "ping" ] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 5 | |
| networks: | |
| - goxy-network | |
| # GOXY ML/AI Service | |
| app: | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| container_name: goxy-ml-service | |
| env_file: | |
| - .env | |
| environment: | |
| - DATABASE_URL=postgresql+asyncpg://goxy_user:goxy_password@db:5432/goxy_ml_db | |
| - REDIS_URL=redis://redis:6379/0 | |
| ports: | |
| - "8000:8000" # API | |
| - "9090:9090" # Metrics | |
| volumes: | |
| - ./app:/app/app # Mount source code for development | |
| - ./data:/app/data # Mount data directory | |
| - ./logs:/app/logs # Mount logs directory | |
| depends_on: | |
| db: | |
| condition: service_healthy | |
| redis: | |
| condition: service_healthy | |
| healthcheck: | |
| test: [ "CMD-SHELL", "curl -f http://localhost:8000/health || exit 1" ] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 3 | |
| start_period: 40s | |
| networks: | |
| - goxy-network | |
| restart: unless-stopped | |
| # Database migrations (run once) | |
| migrations: | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| container_name: goxy-ml-migrations | |
| env_file: | |
| - .env | |
| environment: | |
| - DATABASE_URL=postgresql+asyncpg://goxy_user:goxy_password@db:5432/goxy_ml_db | |
| command: alembic upgrade head | |
| depends_on: | |
| db: | |
| condition: service_healthy | |
| networks: | |
| - goxy-network | |
| volumes: | |
| postgres_data: | |
| driver: local | |
| redis_data: | |
| driver: local | |
| networks: | |
| goxy-network: | |
| driver: bridge | |