mirror of
https://github.com/okxlin/appstore.git
synced 2026-09-23 08:01:00 +00:00
216 lines
6.8 KiB
YAML
216 lines
6.8 KiB
YAML
services:
|
|
librechat-api:
|
|
image: "registry.librechat.ai/danny-avila/librechat-dev:latest"
|
|
container_name: ${CONTAINER_NAME}
|
|
user: root
|
|
restart: always
|
|
depends_on:
|
|
librechat-mongodb:
|
|
condition: service_healthy
|
|
librechat-meilisearch:
|
|
condition: service_healthy
|
|
librechat-rag-api:
|
|
condition: service_healthy
|
|
networks:
|
|
- 1panel-network
|
|
- librechat-network
|
|
ports:
|
|
- "${PANEL_APP_PORT_HTTP}:3080"
|
|
entrypoint: sh
|
|
command:
|
|
- -lc
|
|
- |
|
|
set -e
|
|
install -d -o node -g node -m 775 /app/client/public/images /app/uploads /app/logs /app/skill
|
|
if [ "$$(stat -c '%u:%g' /app/logs)" != "1000:1000" ] || [ "$$(stat -c '%u:%g' /app/uploads)" != "1000:1000" ]; then
|
|
chown -R node:node /app/client/public/images /app/uploads /app/logs /app/skill
|
|
fi
|
|
export JWT_SECRET="$$(printf '%s' "$${LIBRECHAT_APP_SECRET}:jwt" | sha256sum | awk '{print $$1}')"
|
|
export JWT_REFRESH_SECRET="$$(printf '%s' "$${LIBRECHAT_APP_SECRET}:refresh" | sha256sum | awk '{print $$1}')"
|
|
export CREDS_KEY="$$(printf '%s' "$${LIBRECHAT_APP_SECRET}:creds-key" | sha256sum | awk '{print $$1}')"
|
|
export CREDS_IV="$$(printf '%s' "$${LIBRECHAT_APP_SECRET}:creds-iv" | sha256sum | awk '{print $$1}' | cut -c1-32)"
|
|
exec su node -s /bin/sh -c 'exec docker-entrypoint.sh npm run backend'
|
|
environment:
|
|
- TZ=${TZ}
|
|
- HOST=0.0.0.0
|
|
- PORT=3080
|
|
- NODE_ENV=production
|
|
- MONGO_URI=mongodb://librechat-mongodb:27017/LibreChat
|
|
- MEILI_HOST=http://librechat-meilisearch:7700
|
|
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
|
|
- MEILI_NO_ANALYTICS=true
|
|
- SEARCH=true
|
|
- RAG_PORT=8000
|
|
- RAG_API_URL=http://librechat-rag-api:8000
|
|
- DOMAIN_CLIENT=${DOMAIN_CLIENT}
|
|
- DOMAIN_SERVER=${DOMAIN_SERVER}
|
|
- ADMIN_PANEL_URL=${ADMIN_PANEL_URL}
|
|
- NO_INDEX=true
|
|
- TRUST_PROXY=1
|
|
- CONSOLE_JSON=false
|
|
- DEBUG_LOGGING=false
|
|
- DEBUG_CONSOLE=false
|
|
- LOG_TO_FILE=true
|
|
- ALLOW_EMAIL_LOGIN=true
|
|
- ALLOW_REGISTRATION=${ALLOW_REGISTRATION}
|
|
- ALLOW_SOCIAL_LOGIN=false
|
|
- ALLOW_SOCIAL_REGISTRATION=false
|
|
- ALLOW_PASSWORD_RESET=false
|
|
- ALLOW_UNVERIFIED_EMAIL_LOGIN=true
|
|
- OPENAI_API_KEY=user_provided
|
|
- ANTHROPIC_API_KEY=user_provided
|
|
- GOOGLE_KEY=user_provided
|
|
- ASSISTANTS_API_KEY=user_provided
|
|
- LIBRECHAT_APP_SECRET=${LIBRECHAT_APP_SECRET}
|
|
- PROXY=
|
|
- HTTP_PROXY=
|
|
- HTTPS_PROXY=
|
|
- NO_PROXY=localhost,127.0.0.1,::1,librechat-mongodb,librechat-meilisearch,librechat-rag-api,librechat-vectordb,host.docker.internal
|
|
- http_proxy=
|
|
- https_proxy=
|
|
- no_proxy=localhost,127.0.0.1,::1,librechat-mongodb,librechat-meilisearch,librechat-rag-api,librechat-vectordb,host.docker.internal
|
|
volumes:
|
|
- "${APP_DATA_DIR}/images:/app/client/public/images"
|
|
- "${APP_DATA_DIR}/uploads:/app/uploads"
|
|
- "${APP_DATA_DIR}/logs:/app/logs"
|
|
- "${APP_DATA_DIR}/skill:/app/skill"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "nc -z -w 10 127.0.0.1 3080"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 20
|
|
start_period: 120s
|
|
labels:
|
|
createdBy: "Apps"
|
|
|
|
librechat-admin:
|
|
image: "registry.librechat.ai/clickhouse/librechat-admin-panel:latest"
|
|
container_name: ${CONTAINER_NAME}-admin
|
|
restart: always
|
|
depends_on:
|
|
librechat-api:
|
|
condition: service_healthy
|
|
networks:
|
|
- 1panel-network
|
|
- librechat-network
|
|
ports:
|
|
- "${PANEL_APP_PORT_ADMIN}:3000"
|
|
entrypoint: sh
|
|
command:
|
|
- -lc
|
|
- |
|
|
set -e
|
|
export SESSION_SECRET="$$(printf '%s' "$${LIBRECHAT_APP_SECRET}:admin-session" | sha256sum | awk '{print $$1}')"
|
|
exec docker-entrypoint.sh bun run start
|
|
environment:
|
|
- TZ=${TZ}
|
|
- PORT=3000
|
|
- API_SERVER_URL=http://librechat-api:3080
|
|
- VITE_API_BASE_URL=${DOMAIN_CLIENT}
|
|
- SESSION_COOKIE_SECURE=false
|
|
- LIBRECHAT_APP_SECRET=${LIBRECHAT_APP_SECRET}
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "nc -z -w 10 127.0.0.1 3000"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 10
|
|
start_period: 60s
|
|
labels:
|
|
createdBy: "Apps"
|
|
|
|
librechat-mongodb:
|
|
image: "mongo:8.0.20"
|
|
container_name: ${CONTAINER_NAME}-mongodb
|
|
restart: always
|
|
command: mongod --noauth
|
|
networks:
|
|
- librechat-network
|
|
volumes:
|
|
- "${APP_DATA_DIR}/mongodb:/data/db"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "mongosh --quiet --eval 'db.adminCommand(\"ping\").ok' | grep 1"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 10
|
|
start_period: 30s
|
|
labels:
|
|
createdBy: "Apps"
|
|
|
|
librechat-meilisearch:
|
|
image: "getmeili/meilisearch:v1.35.1"
|
|
container_name: ${CONTAINER_NAME}-meilisearch
|
|
restart: always
|
|
networks:
|
|
- librechat-network
|
|
environment:
|
|
- MEILI_HOST=http://librechat-meilisearch:7700
|
|
- MEILI_NO_ANALYTICS=true
|
|
- MEILI_DB_PATH=/meili_data
|
|
- MEILI_ENV=production
|
|
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
|
|
volumes:
|
|
- "${APP_DATA_DIR}/meilisearch:/meili_data"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:7700/health >/dev/null"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 10
|
|
start_period: 30s
|
|
labels:
|
|
createdBy: "Apps"
|
|
|
|
librechat-vectordb:
|
|
image: "pgvector/pgvector:0.8.0-pg15-trixie"
|
|
container_name: ${CONTAINER_NAME}-vectordb
|
|
restart: always
|
|
networks:
|
|
- librechat-network
|
|
environment:
|
|
- POSTGRES_DB=librechat_rag
|
|
- POSTGRES_USER=librechat
|
|
- POSTGRES_PASSWORD=${VECTOR_DB_PASSWORD}
|
|
volumes:
|
|
- "${APP_DATA_DIR}/pgvector:/var/lib/postgresql/data"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U librechat -d librechat_rag"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 10
|
|
start_period: 30s
|
|
labels:
|
|
createdBy: "Apps"
|
|
|
|
librechat-rag-api:
|
|
image: "registry.librechat.ai/danny-avila/librechat-rag-api-dev-lite:latest"
|
|
container_name: ${CONTAINER_NAME}-rag-api
|
|
restart: always
|
|
depends_on:
|
|
librechat-vectordb:
|
|
condition: service_healthy
|
|
networks:
|
|
- librechat-network
|
|
environment:
|
|
- DB_HOST=librechat-vectordb
|
|
- DB_PORT=5432
|
|
- POSTGRES_DB=librechat_rag
|
|
- POSTGRES_USER=librechat
|
|
- POSTGRES_PASSWORD=${VECTOR_DB_PASSWORD}
|
|
- VECTOR_DB_TYPE=pgvector
|
|
- RAG_HOST=0.0.0.0
|
|
- RAG_PORT=8000
|
|
- OPENAI_API_KEY=user_provided
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health', timeout=5).read()\""]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 20
|
|
start_period: 120s
|
|
labels:
|
|
createdBy: "Apps"
|
|
|
|
networks:
|
|
1panel-network:
|
|
external: true
|
|
librechat-network:
|
|
driver: bridge
|