| version: '3.8' |
|
|
| |
| |
|
|
| services: |
| |
| sparknet-api: |
| build: |
| context: . |
| dockerfile: Dockerfile |
| target: production |
| container_name: sparknet-api |
| ports: |
| - "8000:8000" |
| volumes: |
| - ./data:/app/data |
| - ./uploads:/app/uploads |
| - ./outputs:/app/outputs |
| - ./logs:/app/logs |
| environment: |
| - PYTHONPATH=/app |
| - OLLAMA_HOST=http://ollama:11434 |
| - CHROMA_HOST=chromadb |
| - CHROMA_PORT=8000 |
| - REDIS_URL=redis://redis:6379 |
| - SPARKNET_SECRET_KEY=${SPARKNET_SECRET_KEY:-sparknet-docker-secret-key} |
| - LOG_LEVEL=INFO |
| depends_on: |
| ollama: |
| condition: service_healthy |
| chromadb: |
| condition: service_started |
| redis: |
| condition: service_healthy |
| networks: |
| - sparknet-network |
| restart: unless-stopped |
| healthcheck: |
| test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"] |
| interval: 30s |
| timeout: 10s |
| retries: 3 |
| start_period: 60s |
|
|
| sparknet-demo: |
| build: |
| context: . |
| dockerfile: Dockerfile |
| target: production |
| container_name: sparknet-demo |
| command: ["streamlit", "run", "demo/app.py", "--server.address", "0.0.0.0", "--server.port", "4000"] |
| ports: |
| - "4000:4000" |
| volumes: |
| - ./data:/app/data |
| - ./uploads:/app/uploads |
| - ./outputs:/app/outputs |
| environment: |
| - PYTHONPATH=/app |
| - OLLAMA_HOST=http://ollama:11434 |
| - CHROMA_HOST=chromadb |
| - CHROMA_PORT=8000 |
| - API_URL=http://sparknet-api:8000 |
| depends_on: |
| - sparknet-api |
| networks: |
| - sparknet-network |
| restart: unless-stopped |
|
|
| |
| ollama: |
| image: ollama/ollama:latest |
| container_name: sparknet-ollama |
| ports: |
| - "11434:11434" |
| volumes: |
| - ollama_data:/root/.ollama |
| environment: |
| - OLLAMA_KEEP_ALIVE=24h |
| deploy: |
| resources: |
| reservations: |
| devices: |
| - driver: nvidia |
| count: all |
| capabilities: [gpu] |
| networks: |
| - sparknet-network |
| restart: unless-stopped |
| healthcheck: |
| test: ["CMD", "curl", "-f", "http://localhost:11434/api/tags"] |
| interval: 30s |
| timeout: 10s |
| retries: 5 |
| start_period: 120s |
|
|
| |
| chromadb: |
| image: chromadb/chroma:latest |
| container_name: sparknet-chromadb |
| ports: |
| - "8001:8000" |
| volumes: |
| - chroma_data:/chroma/chroma |
| environment: |
| - IS_PERSISTENT=TRUE |
| - PERSIST_DIRECTORY=/chroma/chroma |
| - ANONYMIZED_TELEMETRY=FALSE |
| networks: |
| - sparknet-network |
| restart: unless-stopped |
|
|
| |
| redis: |
| image: redis:7-alpine |
| container_name: sparknet-redis |
| ports: |
| - "6379:6379" |
| volumes: |
| - redis_data:/data |
| command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru |
| networks: |
| - sparknet-network |
| restart: unless-stopped |
| healthcheck: |
| test: ["CMD", "redis-cli", "ping"] |
| interval: 10s |
| timeout: 5s |
| retries: 5 |
|
|
| |
| nginx: |
| image: nginx:alpine |
| container_name: sparknet-nginx |
| ports: |
| - "80:80" |
| - "443:443" |
| volumes: |
| - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro |
| - ./nginx/ssl:/etc/nginx/ssl:ro |
| depends_on: |
| - sparknet-api |
| - sparknet-demo |
| networks: |
| - sparknet-network |
| restart: unless-stopped |
| profiles: |
| - production |
|
|
| |
| volumes: |
| ollama_data: |
| driver: local |
| chroma_data: |
| driver: local |
| redis_data: |
| driver: local |
|
|
| |
| networks: |
| sparknet-network: |
| driver: bridge |
|
|