75 lines
2.4 KiB
YAML
75 lines
2.4 KiB
YAML
services:
|
|
neuroforge:
|
|
build:
|
|
context: .
|
|
target: server
|
|
ports:
|
|
- "127.0.0.1:8080:8080"
|
|
environment:
|
|
NEUROFORGE_ADMIN_TOKEN: ${NEUROFORGE_ADMIN_TOKEN}
|
|
NEUROFORGE_APP_API_KEY: ${NEUROFORGE_APP_API_KEY}
|
|
NEUROFORGE_WORKER_TOKEN: ${NEUROFORGE_WORKER_TOKEN}
|
|
NEUROFORGE_METRICS_TOKEN: ${NEUROFORGE_METRICS_TOKEN}
|
|
NEUROFORGE_CLUSTER_TOKEN: ${NEUROFORGE_CLUSTER_TOKEN:-}
|
|
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
|
|
volumes:
|
|
- neuroforge-data:/app/data
|
|
restart: unless-stopped
|
|
read_only: true
|
|
tmpfs:
|
|
- /tmp:size=64m,mode=1777
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
cap_drop:
|
|
- ALL
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "-O", "-", "http://127.0.0.1:8080/readyz"]
|
|
interval: 15s
|
|
timeout: 3s
|
|
retries: 4
|
|
start_period: 10s
|
|
|
|
worker-cpu:
|
|
build:
|
|
context: .
|
|
target: worker
|
|
command: ["-server", "http://neuroforge:8080", "-id", "cpu-compose-1"]
|
|
environment:
|
|
NEUROFORGE_WORKER_TOKEN: ${NEUROFORGE_WORKER_TOKEN:?Set a unique NeuroForge worker token}
|
|
NEUROFORGE_WORKER_RESOURCE_CLASS: cpu
|
|
NEUROFORGE_WORKER_CAPABILITIES: cpu,vector.relink
|
|
NEUROFORGE_WORKER_MAX_CONCURRENCY: ${NEUROFORGE_CPU_WORKER_CONCURRENCY:-2}
|
|
depends_on:
|
|
neuroforge:
|
|
condition: service_healthy
|
|
restart: unless-stopped
|
|
read_only: true
|
|
tmpfs: ["/tmp:size=32m,mode=1777"]
|
|
security_opt: ["no-new-privileges:true"]
|
|
cap_drop: ["ALL"]
|
|
|
|
worker-gpu:
|
|
build:
|
|
context: .
|
|
target: worker
|
|
command: ["-server", "http://neuroforge:8080", "-id", "gpu-compose-1"]
|
|
environment:
|
|
NEUROFORGE_WORKER_TOKEN: ${NEUROFORGE_WORKER_TOKEN:?Set a unique NeuroForge worker token}
|
|
NEUROFORGE_WORKER_RESOURCE_CLASS: gpu
|
|
NEUROFORGE_WORKER_CAPABILITIES: gpu,model.chat,model.embed
|
|
NEUROFORGE_WORKER_MAX_CONCURRENCY: ${NEUROFORGE_GPU_WORKER_CONCURRENCY:-1}
|
|
NEUROFORGE_WORKER_OLLAMA_URL: ${OLLAMA_BASE_URL:-http://ollama:11434}
|
|
NEUROFORGE_WORKER_OLLAMA_CHAT_MODEL: ${OLLAMA_MODEL:-gemma3}
|
|
NEUROFORGE_WORKER_OLLAMA_EMBEDDING_MODEL: ${OLLAMA_EMBEDDING_MODEL:-embeddinggemma}
|
|
depends_on:
|
|
neuroforge:
|
|
condition: service_healthy
|
|
restart: unless-stopped
|
|
read_only: true
|
|
tmpfs: ["/tmp:size=32m,mode=1777"]
|
|
security_opt: ["no-new-privileges:true"]
|
|
cap_drop: ["ALL"]
|
|
|
|
volumes:
|
|
neuroforge-data:
|