-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
142 lines (139 loc) · 6.21 KB
/
docker-compose.yml
File metadata and controls
142 lines (139 loc) · 6.21 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# -----------------------------------------------------------------------------
# MyWebIntelligence — Docker Compose
# -----------------------------------------------------------------------------
# Objectif
# - Démarrer l’app rapidement avec un dossier de données persistant sur l’hôte.
# - Aucune modification de code requise pour choisir l’emplacement des données.
#
# Où vont les données ?
# - Côté hôte (votre machine) : variable .env `HOST_DATA_DIR` (par défaut ./data)
# - Côté conteneur : chemin fixe /app/data (recommandé)
# - L’app utilise `settings.data_location` qui vaut "data" par défaut et
# se résout côté conteneur vers /app/data. On peut aussi surcharger avec
# l’ENV `MYWI_DATA_DIR` (déjà positionnée ci‑dessous).
#
# Exemples de .env (copier .env.example → .env) :
# # Par défaut, stocker dans ./data du dépôt
# HOST_DATA_DIR=./data
#
# # macOS/Linux – dossier en dehors du dépôt
# # HOST_DATA_DIR=/Users/vous/mywi_data
#
# # Windows – dossier en dehors du dépôt
# # HOST_DATA_DIR=C:/Users/Vous/mywi_data
#
# Commandes utiles :
# docker compose up -d --build
# docker compose exec mwi python mywi.py db setup
# docker compose exec mwi python mywi.py land crawl --name=LAND
# -----------------------------------------------------------------------------
services:
mwi:
build:
context: .
args:
# Build-time toggles (optional)
# WITH_ML=1 pour installer les extras ML (FAISS + transformers)
- WITH_ML=${MYWI_WITH_ML:-0}
# WITH_PLAYWRIGHT_BROWSERS=1 pour pré-installer les navigateurs Playwright
- WITH_PLAYWRIGHT_BROWSERS=${MYWI_WITH_PLAYWRIGHT_BROWSERS:-0}
image: mwi:latest
container_name: mwi
environment:
- PYTHONUNBUFFERED=1
- TZ=${TZ:-UTC}
# Chemin interne utilisé par l’app (ne pas changer sauf besoin avancé)
# settings.py lit MYWI_DATA_DIR (fallback sur "data") → /app/data
- MYWI_DATA_DIR=/app/data
# Variables MWI_* passées au conteneur (optionnelles, définies dans .env)
- MWI_OPENROUTER_ENABLED=${MWI_OPENROUTER_ENABLED:-}
- MWI_OPENROUTER_API_KEY=${MWI_OPENROUTER_API_KEY:-}
- MWI_OPENROUTER_MODEL=${MWI_OPENROUTER_MODEL:-}
- MWI_OPENROUTER_TIMEOUT=${MWI_OPENROUTER_TIMEOUT:-}
- MWI_OPENROUTER_MIN_CHARS=${MWI_OPENROUTER_MIN_CHARS:-}
- MWI_OPENROUTER_MAX_CHARS=${MWI_OPENROUTER_MAX_CHARS:-}
- MWI_OPENROUTER_MAX_CALLS=${MWI_OPENROUTER_MAX_CALLS:-}
- MWI_SEORANK_API_BASE_URL=${MWI_SEORANK_API_BASE_URL:-}
- MWI_SEORANK_API_KEY=${MWI_SEORANK_API_KEY:-}
- MWI_SERPAPI_API_KEY=${MWI_SERPAPI_API_KEY:-}
- MWI_EMBED_PROVIDER=${MWI_EMBED_PROVIDER:-}
- MWI_EMBED_MODEL=${MWI_EMBED_MODEL:-}
- MWI_EMBED_API_URL=${MWI_EMBED_API_URL:-}
- MWI_OPENAI_API_KEY=${MWI_OPENAI_API_KEY:-}
- MWI_MISTRAL_API_KEY=${MWI_MISTRAL_API_KEY:-}
- MWI_GEMINI_API_KEY=${MWI_GEMINI_API_KEY:-}
- MWI_HF_API_KEY=${MWI_HF_API_KEY:-}
- MWI_OLLAMA_BASE_URL=${MWI_OLLAMA_BASE_URL:-}
- MWI_NLI_MODEL_NAME=${MWI_NLI_MODEL_NAME:-}
- MWI_NLI_BACKEND=${MWI_NLI_BACKEND:-}
- MWI_NLI_TORCH_THREADS=${MWI_NLI_TORCH_THREADS:-}
- MWI_NLI_FALLBACK_MODEL_NAME=${MWI_NLI_FALLBACK_MODEL_NAME:-}
- MWI_SIMILARITY_BACKEND=${MWI_SIMILARITY_BACKEND:-}
- MWI_SIMILARITY_TOP_K=${MWI_SIMILARITY_TOP_K:-}
- MWI_NLI_ENTAILMENT_THRESHOLD=${MWI_NLI_ENTAILMENT_THRESHOLD:-}
- MWI_NLI_CONTRADICTION_THRESHOLD=${MWI_NLI_CONTRADICTION_THRESHOLD:-}
volumes:
# Mappage volume : HOST:CONTAINER
# - source (HOST_DATA_DIR) : dossier sur votre machine (défaut ./data)
# - target (/app/data) : dossier interne attendu par l’app
- type: bind
source: ${HOST_DATA_DIR:-./data}
target: /app/data
tty: true
stdin_open: true
restart: unless-stopped
command: ["tail", "-f", "/dev/null"]
# Optional: one-shot helper to install Playwright browsers post-build
# Use: docker compose run --rm playwright-setup
playwright-setup:
image: mwi:latest
depends_on:
- mwi
environment:
- MYWI_DATA_DIR=/app/data
volumes:
# Utilise le même dossier de données que le service principal
- type: bind
source: ${HOST_DATA_DIR:-./data}
target: /app/data
entrypoint: ["python", "install_playwright.py"]
profiles: ["tools"]
# Optional: ephemeral runner for direct commands without attaching to mwi
# Use: docker compose run --rm mwi-run python mywi.py db setup
mwi-run:
image: mwi:latest
environment:
- MYWI_DATA_DIR=/app/data
- MWI_OPENROUTER_ENABLED=${MWI_OPENROUTER_ENABLED:-}
- MWI_OPENROUTER_API_KEY=${MWI_OPENROUTER_API_KEY:-}
- MWI_OPENROUTER_MODEL=${MWI_OPENROUTER_MODEL:-}
- MWI_OPENROUTER_TIMEOUT=${MWI_OPENROUTER_TIMEOUT:-}
- MWI_OPENROUTER_MIN_CHARS=${MWI_OPENROUTER_MIN_CHARS:-}
- MWI_OPENROUTER_MAX_CHARS=${MWI_OPENROUTER_MAX_CHARS:-}
- MWI_OPENROUTER_MAX_CALLS=${MWI_OPENROUTER_MAX_CALLS:-}
- MWI_SEORANK_API_BASE_URL=${MWI_SEORANK_API_BASE_URL:-}
- MWI_SEORANK_API_KEY=${MWI_SEORANK_API_KEY:-}
- MWI_SERPAPI_API_KEY=${MWI_SERPAPI_API_KEY:-}
- MWI_EMBED_PROVIDER=${MWI_EMBED_PROVIDER:-}
- MWI_EMBED_MODEL=${MWI_EMBED_MODEL:-}
- MWI_EMBED_API_URL=${MWI_EMBED_API_URL:-}
- MWI_OPENAI_API_KEY=${MWI_OPENAI_API_KEY:-}
- MWI_MISTRAL_API_KEY=${MWI_MISTRAL_API_KEY:-}
- MWI_GEMINI_API_KEY=${MWI_GEMINI_API_KEY:-}
- MWI_HF_API_KEY=${MWI_HF_API_KEY:-}
- MWI_OLLAMA_BASE_URL=${MWI_OLLAMA_BASE_URL:-}
- MWI_NLI_MODEL_NAME=${MWI_NLI_MODEL_NAME:-}
- MWI_NLI_BACKEND=${MWI_NLI_BACKEND:-}
- MWI_NLI_TORCH_THREADS=${MWI_NLI_TORCH_THREADS:-}
- MWI_NLI_FALLBACK_MODEL_NAME=${MWI_NLI_FALLBACK_MODEL_NAME:-}
- MWI_SIMILARITY_BACKEND=${MWI_SIMILARITY_BACKEND:-}
- MWI_SIMILARITY_TOP_K=${MWI_SIMILARITY_TOP_K:-}
- MWI_NLI_ENTAILMENT_THRESHOLD=${MWI_NLI_ENTAILMENT_THRESHOLD:-}
- MWI_NLI_CONTRADICTION_THRESHOLD=${MWI_NLI_CONTRADICTION_THRESHOLD:-}
volumes:
# Runner éphémère pour exécuter une commande ponctuelle
- type: bind
source: ${HOST_DATA_DIR:-./data}
target: /app/data
entrypoint: ["bash", "-lc"]
profiles: ["tools"]