librechat-compose.yml
Rama main · réplica de lectura del repositorio original.
services:
librechat:
image: ghcr.io/danny-avila/librechat:latest
restart: always
ports:
- "${LIBRECHAT_PORT:-3080}:${LIBRECHAT_PORT:-3080}"
depends_on:
mongodb:
condition: service_started
meilisearch:
condition: service_started
clickhouse-mcp:
condition: service_healthy
rag_api:
condition: service_started
healthcheck:
test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://127.0.0.1:3080/ || exit 1"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
environment:
- HOST=0.0.0.0
- PORT=${LIBRECHAT_PORT:-3080}
- MONGO_URI=mongodb://mongodb:27017/LibreChat
- MEILI_HOST=http://meilisearch:7700
- RAG_PORT=${RAG_PORT:-8000}
- RAG_API_URL=http://rag_api:${RAG_PORT:-8000}
# Load required LibreChat env vars
- JWT_SECRET=${JWT_SECRET}
- JWT_REFRESH_SECRET=${JWT_REFRESH_SECRET}
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
- VECTORDB_DB=${VECTORDB_DB:-mydatabase}
- VECTORDB_USER=${VECTORDB_USER:-myuser}
- VECTORDB_PASSWORD=${VECTORDB_PASSWORD:-mypassword}
# Langfuse Integration - Tracing and Observability
# Defaults point at the local Langfuse stack; override these in .env to
# send traces to a Langfuse Cloud (or other remote) project instead.
- LANGFUSE_PUBLIC_KEY=${LANGFUSE_PUBLIC_KEY}
- LANGFUSE_SECRET_KEY=${LANGFUSE_SECRET_KEY}
- LANGFUSE_BASE_URL=${LANGFUSE_BASE_URL}
volumes:
- type: bind
source: ./.env
target: /app/.env
- type: bind
source: ./librechat.yaml
target: /app/librechat.yaml
- librechat_images:/app/client/public/images
- librechat_uploads:/app/uploads
librechat-user-init:
image: docker:27-cli
restart: "no"
depends_on:
librechat:
condition: service_healthy
mongodb:
condition: service_started
environment:
- LANGFUSE_INIT_USER_EMAIL=${LANGFUSE_INIT_USER_EMAIL}
- LANGFUSE_INIT_USER_PASSWORD=${LANGFUSE_INIT_USER_PASSWORD}
- LANGFUSE_INIT_USER_NAME=${LANGFUSE_INIT_USER_NAME}
- LIBRECHAT_PORT=${LIBRECHAT_PORT:-3080}
- COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME:-workos-2}
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- type: bind
source: ./scripts/init-librechat-user.sh
target: /init-user.sh
read_only: true
working_dir: /
entrypoint: ["/bin/sh", "/init-user.sh"]
mongodb:
image: mongo:8.0.17
restart: always
volumes:
- librechat_mongodb_data:/data/db
command: mongod --noauth
ports:
- "127.0.0.1:27017:27017" # Bind to localhost only
meilisearch:
image: getmeili/meilisearch:v1.12.3
restart: always
environment:
- MEILI_HOST=http://meilisearch:7700
- MEILI_NO_ANALYTICS=true
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
volumes:
- librechat_meili_data:/meili_data
ports:
- "127.0.0.1:7700:7700" # Bind to localhost only
vectordb:
image: pgvector/pgvector:0.8.0-pg15-trixie
restart: always
environment:
POSTGRES_DB: ${VECTORDB_DB:-mydatabase}
POSTGRES_USER: ${VECTORDB_USER:-myuser}
POSTGRES_PASSWORD: ${VECTORDB_PASSWORD:-mypassword}
volumes:
- librechat_vectordb_data:/var/lib/postgresql/data
ports:
- "127.0.0.1:5433:5432" # Different port than Langfuse's postgres (5432)
# RAG API service for file uploads and retrieval
rag_api:
image: ghcr.io/danny-avila/librechat-rag-api-dev-lite:latest
restart: always
environment:
- DB_HOST=vectordb
- RAG_PORT=${RAG_PORT:-8000}
- POSTGRES_DB=${VECTORDB_DB:-mydatabase}
- POSTGRES_USER=${VECTORDB_USER:-myuser}
- POSTGRES_PASSWORD=${VECTORDB_PASSWORD:-mypassword}
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
depends_on:
vectordb:
condition: service_started
env_file:
- .env
ports:
- "127.0.0.1:${RAG_PORT:-8001}:${RAG_PORT:-8000}"
volumes:
librechat_mongodb_data:
librechat_meili_data:
librechat_vectordb_data:
librechat_images:
librechat_uploads: