| version: "3.9" | |
| services: | |
| # Combined game + OpenEnv server (matches the single HF Spaces Dockerfile) | |
| parlay: | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| ports: | |
| - "7860:7860" | |
| environment: | |
| - GOOGLE_API_KEY=${GOOGLE_API_KEY:-} | |
| - MAX_TURNS_PER_EPISODE=20 | |
| - TOP_PLAYER_THRESHOLD=0.60 | |
| volumes: | |
| - ./parlay.db:/app/parlay.db | |
| restart: unless-stopped | |
| # MCP server — shares the same image but runs the MCP entry-point | |
| mcp: | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| command: python -m mcp_server.server sse | |
| ports: | |
| - "8002:8002" | |
| environment: | |
| - GOOGLE_API_KEY=${GOOGLE_API_KEY:-} | |
| depends_on: | |
| - parlay | |
| restart: unless-stopped | |
| # Training is intentionally separate and never deployed to HF Spaces | |
| train: | |
| build: | |
| context: . | |
| dockerfile: Dockerfile.train | |
| profiles: | |
| - training | |
| environment: | |
| - GOOGLE_API_KEY=${GOOGLE_API_KEY:-} | |
| - HF_TOKEN=${HF_TOKEN:-} | |
| - HF_REPO_ID=${HF_REPO_ID:-} | |
| volumes: | |
| - ./data:/app/data | |
| - ./models:/app/models | |