-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
69 lines (66 loc) · 2.89 KB
/
Copy pathdocker-compose.yml
File metadata and controls
69 lines (66 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# Déploiement auto-hébergé de Athena v2.
#
# Prérequis :
# 1. Copier .env.example -> .env et définir au minimum ADMIN_PASSWORD
# (obligatoire car le conteneur écoute sur 0.0.0.0) et tes clés LLM.
# 2. Définir ATHENA_DATA = chemin ABSOLU sur l'hôte pour l'état persistant.
# (Il est monté au MÊME chemin dans le conteneur : indispensable pour que
# la sandbox Docker — pilotée via le socket hôte — puisse monter le
# workspace dans ses conteneurs jetables.)
# Exemple dans .env : ATHENA_DATA=/opt/athena/data
#
# Lancement : docker compose up -d --build
# Accès : http://localhost:8000 (ou derrière un reverse-proxy HTTPS)
services:
athena:
build: .
container_name: athena
restart: unless-stopped
ports:
- "8000:8000"
env_file: .env
environment:
HOST: "0.0.0.0"
ATHENA_DATA: "${ATHENA_DATA:?Définis ATHENA_DATA=/chemin/absolu dans .env}"
# Tout l'état persistant vit sous ATHENA_DATA (chemin identique hôte/conteneur).
CONVERSATIONS_PATH: "${ATHENA_DATA}/conversations.json"
CORE_MEMORY_PATH: "${ATHENA_DATA}/core_memory.json"
CHROMA_DB_PATH: "${ATHENA_DATA}/chroma"
RUNS_DB_PATH: "${ATHENA_DATA}/runs.sqlite3"
# État partagé multi-worker (comptes, quotas, sessions, routines, invitations,
# projets partagés, config par-utilisateur, pipelines) — DOIT persister sur le volume.
STATE_DB_PATH: "${ATHENA_DATA}/athena_state.sqlite3"
ROUTINES_PATH: "${ATHENA_DATA}/routines.json"
ACTIVE_WORKSPACE_DIR: "${ATHENA_DATA}/workspace"
LOG_DIR: "${ATHENA_DATA}/logs"
MCP_CONFIG_PATH: "${ATHENA_DATA}/mcp_servers.json"
CHANNEL_POLICIES_PATH: "${ATHENA_DATA}/channel_policies.json"
# RAG en mode SERVEUR (sûr en multi-worker) : tous les workers parlent au service chroma.
CHROMA_SERVER_HOST: "chroma"
CHROMA_SERVER_PORT: "8000"
depends_on:
- chroma
volumes:
# Même chemin hôte/conteneur => la sandbox (socket hôte) peut monter le workspace.
- "${ATHENA_DATA}:${ATHENA_DATA}"
# Socket Docker : exécution de la sandbox en conteneurs frères sur l'hôte.
- "/var/run/docker.sock:/var/run/docker.sock"
# Base vectorielle (RAG) en mode serveur — partagée par tous les workers Athena.
chroma:
image: chromadb/chroma:0.5.0
container_name: athena-chroma
restart: unless-stopped
volumes:
- "${ATHENA_DATA}/chroma:/chroma/chroma"
# Observabilité LLM OPTIONNELLE (OpenInference → Phoenix). Démarrer avec :
# docker compose --profile observability up -d
# puis dans .env : OPENINFERENCE_ENABLED=true et
# OTEL_EXPORTER_OTLP_ENDPOINT=http://phoenix:6006/v1/traces
# UI Phoenix accessible sur http://localhost:6006
phoenix:
image: arizephoenix/phoenix:latest
container_name: athena-phoenix
restart: unless-stopped
profiles: ["observability"]
ports:
- "6006:6006"