GOXY / docker-compose.yml
lasagnakanada
Deploy GOXY ML Service to HuggingFace Space
3d6cc8a
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