Spaces:
Running
Running
| version: '3.8' | |
| services: | |
| translator: | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| target: runtime | |
| image: vibeon-translator:latest | |
| container_name: vibeon-translator | |
| restart: unless-stopped | |
| ports: | |
| - "8000:8000" # API port | |
| - "9090:9090" # Metrics port | |
| volumes: | |
| - ./uploads:/app/uploads | |
| - ./logs:/app/logs | |
| - ./cache:/app/cache | |
| - model-cache:/app/models | |
| environment: | |
| - APP_NAME=vibeon-translator | |
| - API_VERSION=v2 | |
| - LOG_LEVEL=INFO | |
| - MAX_WORKERS=4 | |
| - ENABLE_GPU=true | |
| - CUDA_VISIBLE_DEVICES=0 | |
| - MODEL_CACHE_DIR=/app/models | |
| - REDIS_URL=redis://redis:6379/0 | |
| - ENABLE_MONITORING=true | |
| - PROMETHEUS_PORT=9090 | |
| depends_on: | |
| - redis | |
| - prometheus | |
| networks: | |
| - translator-network | |
| deploy: | |
| resources: | |
| limits: | |
| memory: 16G | |
| reservations: | |
| devices: | |
| - driver: nvidia | |
| count: 1 | |
| capabilities: [gpu] | |
| healthcheck: | |
| test: ["CMD", "curl", "-f", "http://localhost:8000/api/v2/health"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 3 | |
| start_period: 60s | |
| redis: | |
| image: redis:7-alpine | |
| container_name: vibeon-redis | |
| restart: unless-stopped | |
| ports: | |
| - "6379:6379" | |
| volumes: | |
| - redis-data:/data | |
| command: redis-server --appendonly yes --maxmemory 2gb --maxmemory-policy allkeys-lru | |
| networks: | |
| - translator-network | |
| healthcheck: | |
| test: ["CMD", "redis-cli", "ping"] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 3 | |
| prometheus: | |
| image: prom/prometheus:latest | |
| container_name: vibeon-prometheus | |
| restart: unless-stopped | |
| ports: | |
| - "9091:9090" | |
| volumes: | |
| - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml | |
| - prometheus-data:/prometheus | |
| command: | |
| - '--config.file=/etc/prometheus/prometheus.yml' | |
| - '--storage.tsdb.path=/prometheus' | |
| - '--web.console.libraries=/usr/share/prometheus/console_libraries' | |
| - '--web.console.templates=/usr/share/prometheus/consoles' | |
| networks: | |
| - translator-network | |
| grafana: | |
| image: grafana/grafana:latest | |
| container_name: vibeon-grafana | |
| restart: unless-stopped | |
| ports: | |
| - "3000:3000" | |
| volumes: | |
| - grafana-data:/var/lib/grafana | |
| - ./monitoring/grafana/dashboards:/etc/grafana/provisioning/dashboards | |
| - ./monitoring/grafana/datasources:/etc/grafana/provisioning/datasources | |
| environment: | |
| - GF_SECURITY_ADMIN_PASSWORD=admin | |
| - GF_USERS_ALLOW_SIGN_UP=false | |
| depends_on: | |
| - prometheus | |
| networks: | |
| - translator-network | |
| nginx: | |
| image: nginx:alpine | |
| container_name: vibeon-nginx | |
| restart: unless-stopped | |
| ports: | |
| - "80:80" | |
| - "443:443" | |
| volumes: | |
| - ./nginx/nginx.conf:/etc/nginx/nginx.conf | |
| - ./nginx/ssl:/etc/nginx/ssl | |
| - ./web/templates:/usr/share/nginx/html | |
| depends_on: | |
| - translator | |
| networks: | |
| - translator-network | |
| # Optional: Jupyter notebook for testing and development | |
| jupyter: | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| target: runtime | |
| image: vibeon-translator:latest | |
| container_name: vibeon-jupyter | |
| ports: | |
| - "8888:8888" | |
| volumes: | |
| - ./notebooks:/app/notebooks | |
| - model-cache:/app/models | |
| environment: | |
| - JUPYTER_ENABLE_LAB=yes | |
| command: jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root | |
| networks: | |
| - translator-network | |
| profiles: | |
| - development | |
| # Model downloader service (runs once to download models) | |
| model-downloader: | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| target: builder | |
| container_name: vibeon-model-downloader | |
| volumes: | |
| - model-cache:/app/models | |
| command: python scripts/download_models.py | |
| networks: | |
| - translator-network | |
| profiles: | |
| - setup | |
| volumes: | |
| model-cache: | |
| driver: local | |
| redis-data: | |
| driver: local | |
| prometheus-data: | |
| driver: local | |
| grafana-data: | |
| driver: local | |
| networks: | |
| translator-network: | |
| driver: bridge | |
| ipam: | |
| config: | |
| - subnet: 172.20.0.0/16 |