Spaces:
Sleeping
Sleeping
| version: '3.8' | |
| services: | |
| app: | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| container_name: writing-studio-app | |
| ports: | |
| - "7860:7860" # Gradio interface | |
| - "8000:8000" # Metrics endpoint | |
| environment: | |
| - ENVIRONMENT=production | |
| - DEBUG=false | |
| - HOST=0.0.0.0 | |
| - PORT=7860 | |
| - LOG_LEVEL=INFO | |
| - ENABLE_METRICS=true | |
| - METRICS_PORT=8000 | |
| env_file: | |
| - .env | |
| volumes: | |
| - ./logs:/app/logs | |
| - ./models:/app/models | |
| restart: unless-stopped | |
| healthcheck: | |
| test: ["CMD", "python", "-c", "import requests; requests.get('http://localhost:7860')"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 3 | |
| start_period: 60s | |
| networks: | |
| - writing-studio-network | |
| # Optional: Prometheus for metrics collection | |
| prometheus: | |
| image: prom/prometheus:latest | |
| container_name: writing-studio-prometheus | |
| ports: | |
| - "9090:9090" | |
| volumes: | |
| - ./configs/prometheus.yml:/etc/prometheus/prometheus.yml | |
| - prometheus-data:/prometheus | |
| command: | |
| - '--config.file=/etc/prometheus/prometheus.yml' | |
| - '--storage.tsdb.path=/prometheus' | |
| networks: | |
| - writing-studio-network | |
| profiles: | |
| - monitoring | |
| # Optional: Grafana for visualization | |
| grafana: | |
| image: grafana/grafana:latest | |
| container_name: writing-studio-grafana | |
| ports: | |
| - "3000:3000" | |
| environment: | |
| - GF_SECURITY_ADMIN_PASSWORD=admin | |
| - GF_USERS_ALLOW_SIGN_UP=false | |
| volumes: | |
| - grafana-data:/var/lib/grafana | |
| networks: | |
| - writing-studio-network | |
| profiles: | |
| - monitoring | |
| networks: | |
| writing-studio-network: | |
| driver: bridge | |
| volumes: | |
| prometheus-data: | |
| grafana-data: | |