-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
115 lines (108 loc) · 3.42 KB
/
docker-compose.yml
File metadata and controls
115 lines (108 loc) · 3.42 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
# Stihia + LibreChat — Docker Compose
#
# Usage:
# 1. Copy .env.example to .env and fill in your API keys.
# 2. Run: docker compose up --build
#
# The stack spins up:
# - LibreChat (official image from Docker Hub)
# - MongoDB (LibreChat data store)
# - Meilisearch (LibreChat search engine)
# - RAG API (LibreChat retrieval-augmented generation)
# - Stihia Proxy (guardrail proxy between LibreChat and LLM providers)
services:
# ---------- LibreChat ----------
librechat:
image: librechat/librechat:v0.8.4
entrypoint: ["/bin/sh", "/opt/stihia/start-with-generated-secrets.sh"]
command: ["npm", "run", "backend"]
ports:
- "3080:3080"
depends_on:
- mongodb
- meilisearch
- rag_api
- stihia-proxy
environment:
- HOST=0.0.0.0
- MONGO_URI=mongodb://mongodb:27017/LibreChat
- MEILI_HOST=http://meilisearch:7700
- RAG_PORT=8000
- RAG_API_URL=http://rag_api:8000
- ENDPOINTS=custom
env_file:
- .env
volumes:
- ./librechat.yaml:/app/librechat.yaml:ro
- ./docker/librechat/start-with-generated-secrets.sh:/opt/stihia/start-with-generated-secrets.sh:ro
- librechat_images:/app/client/public/images
- librechat_logs:/app/api/logs
restart: unless-stopped
# ---------- MongoDB ----------
mongodb:
image: mongo:7
volumes:
- mongodb_data:/data/db
restart: unless-stopped
# ---------- Meilisearch ----------
meilisearch:
image: getmeili/meilisearch:v1.12.8
environment:
- MEILI_NO_ANALYTICS=true
volumes:
- meilisearch_data:/meili_data
restart: unless-stopped
# ---------- PostgreSQL + pgvector (RAG API data store) ----------
vectordb:
image: pgvector/pgvector:0.8.2-pg15
environment:
POSTGRES_DB: ${LIBRECHAT_RAG_POSTGRES_DB:-librechat_rag}
POSTGRES_USER: ${LIBRECHAT_RAG_POSTGRES_USER:-librechat}
POSTGRES_PASSWORD: ${LIBRECHAT_RAG_POSTGRES_PASSWORD:-librechat_dev_password_change_me}
volumes:
- vectordb_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
interval: 10s
timeout: 5s
retries: 10
restart: unless-stopped
# ---------- RAG API ----------
rag_api:
image: ghcr.io/danny-avila/librechat-rag-api-dev-lite:v0.7.3
environment:
- DB_HOST=vectordb
- DB_PORT=${LIBRECHAT_RAG_POSTGRES_PORT:-5432}
- POSTGRES_DB=${LIBRECHAT_RAG_POSTGRES_DB:-librechat_rag}
- POSTGRES_USER=${LIBRECHAT_RAG_POSTGRES_USER:-librechat}
- POSTGRES_PASSWORD=${LIBRECHAT_RAG_POSTGRES_PASSWORD:-librechat_dev_password_change_me}
- RAG_PORT=8000
depends_on:
vectordb:
condition: service_healthy
restart: unless-stopped
# ---------- Stihia Proxy ----------
stihia-proxy:
build:
context: .
dockerfile: Dockerfile
ports:
- "4005:4005"
environment:
- STIHIA_API_KEY=${STIHIA_API_KEY:-}
- STIHIA_API_URL=${STIHIA_API_URL:-https://api.stihia.ai}
- STIHIA_PROJECT_KEY=${STIHIA_PROJECT_KEY:-librechat}
- STIHIA_SEND_FULL_HISTORY=${STIHIA_SEND_FULL_HISTORY:-true}
- LOG_LEVEL=${STIHIA_LOG_LEVEL:-INFO}
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:4005/health"]
interval: 30s
timeout: 5s
retries: 3
volumes:
mongodb_data:
meilisearch_data:
vectordb_data:
librechat_images:
librechat_logs: