| | 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 |
| |
|