backstory/docker-compose.yml
2025-05-16 13:37:05 -07:00

199 lines
5.2 KiB
YAML

services:
backstory:
build:
context: .
dockerfile: Dockerfile
target: backstory
container_name: backstory
image: backstory
restart: "always"
env_file:
- .env
environment:
- PRODUCTION=0
- MODEL_NAME=${MODEL_NAME:-qwen2.5:3b}
devices:
- /dev/dri:/dev/dri
depends_on:
- ollama
networks:
- internal
ports:
- 8912:8911 # FastAPI React server
volumes:
- ./cache:/root/.cache # Persist all models and GPU kernel cache
- ./sessions:/opt/backstory/sessions:rw # Persist sessions
- ./chromadb:/opt/backstory/chromadb:rw # Persist ChromaDB
- ./dev-keys:/opt/backstory/keys:ro # Developer keys
- ./docs:/opt/backstory/docs:rw # Live mount of RAG content
- ./src:/opt/backstory/src:rw # Live mount server src
cap_add: # used for running ze-monitor within container
- CAP_DAC_READ_SEARCH # Bypass all filesystem read access checks
- CAP_PERFMON # Access to perf_events (vs. overloaded CAP_SYS_ADMIN)
- CAP_SYS_PTRACE # PTRACE_MODE_READ_REALCREDS ptrace access mode check
backstory-prod:
build:
context: .
dockerfile: Dockerfile
target: backstory
image: backstory
container_name: backstory-prod
restart: "always"
env_file:
- .env
environment:
- PRODUCTION=1
- MODEL_NAME=${MODEL_NAME:-qwen2.5:7b}
devices:
- /dev/dri:/dev/dri
depends_on:
- ollama
networks:
- internal
ports:
- 8911:8911 # FastAPI React server
volumes:
- ./cache:/root/.cache # Persist all models and GPU kernel cache
- ./chromadb-prod:/opt/backstory/chromadb:rw # Persist ChromaDB
- ./sessions-prod:/opt/backstory/sessions:rw # Persist sessions
- ./docs-prod:/opt/backstory/docs:rw # Live mount of RAG content
- ./frontend/deployed:/opt/backstory/frontend/deployed:ro # Live mount built frontend
cap_add: # used for running ze-monitor within container
- CAP_DAC_READ_SEARCH # Bypass all filesystem read access checks
- CAP_PERFMON # Access to perf_events (vs. overloaded CAP_SYS_ADMIN)
- CAP_SYS_PTRACE # PTRACE_MODE_READ_REALCREDS ptrace access mode check
frontend:
build:
context: .
dockerfile: Dockerfile
target: frontend
container_name: frontend
image: frontend
restart: "always"
env_file:
- .env
ports:
- 3000:3000 # REACT expo while developing frontend
volumes:
- ./frontend:/opt/backstory/frontend:rw # Live mount frontend src
ollama:
build:
context: .
dockerfile: Dockerfile
target: ollama
image: ollama
container_name: ollama
restart: "always"
env_file:
- .env
environment:
- OLLAMA_HOST=0.0.0.0
- ONEAPI_DEVICE_SELECTOR=level_zero:0
devices:
- /dev/dri:/dev/dri
ports:
- 11434:11434 # ollama serve port
networks:
- internal
volumes:
- ./cache:/root/.cache # Cache hub models and neo_compiler_cache
- ./ollama:/root/.ollama # Cache the ollama models
cap_add: # used for running ze-monitor within container
- CAP_DAC_READ_SEARCH # Bypass all filesystem read access checks
- CAP_PERFMON # Access to perf_events (vs. overloaded CAP_SYS_ADMIN)
- CAP_SYS_PTRACE # PTRACE_MODE_READ_REALCREDS ptrace access mode check
jupyter:
build:
context: .
dockerfile: Dockerfile
target: jupyter
image: jupyter
container_name: jupyter
restart: "always"
env_file:
- .env
devices:
- /dev/dri:/dev/dri
depends_on:
- ollama
- miniircd
ports:
- 8888:8888 # Jupyter Notebook
- 60673:60673 # Gradio
networks:
- internal
volumes:
- ./jupyter:/opt/jupyter:rw
- ./cache:/root/.cache
miniircd:
build:
context: .
dockerfile: Dockerfile
target: miniircd
image: miniircd
container_name: miniircd
restart: "no"
env_file:
- .env
ports:
- 6667:6667 # IRC
networks:
- internal
volumes:
- ./cache:/root/.cache
prometheus:
image: prom/prometheus
container_name: prometheus
restart: "always"
ports:
- 9090:9090 # Prometheus
networks:
- internal
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- ./cache/prometheus:/prometheus
grafana:
image: grafana/grafana-oss
container_name: grafana
restart: "always"
env_file:
- .env.grafana
ports:
- 3111:3000 # Grafana
networks:
- internal
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- ./cache/grafana:/var/lib/grafana
# loki:
# image: grafana/loki
# container_name: loki
# restart: "always"
# # env_file:
# # - .env.grafana
# ports:
# - 3211:3100 # Grafana
# networks:
# - internal
# command:
# - -config.file=/loki-config.yaml
# volumes:
# # - ./prometheus.yml:/etc/prometheus/prometheus.yml
# - ./loki-config.yaml:/loki-config.yaml
# - ./cache/loki:/loki
networks:
internal:
driver: bridge