You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

173 lines
6.5 KiB
YAML

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

name: lobe-chat-database
services:
network-service:
image: alpine
container_name: lobe-network
restart: always
ports:
- '${MINIO_PORT}:${MINIO_PORT}' # MinIO API
- '9001:9001' # MinIO Console
- '${CASDOOR_PORT}:${CASDOOR_PORT}' # Casdoor
# - '${LOBE_PORT}:3210' # LobeChat
command: tail -f /dev/null
networks:
- lobe-network
postgresql:
image: pgvector/pgvector:pg17
container_name: lobe-postgres
ports:
- '5432:5432'
volumes:
- './data:/var/lib/postgresql/data'
environment:
- 'POSTGRES_DB=${LOBE_DB_NAME}'
- 'POSTGRES_PASSWORD=${POSTGRES_PASSWORD}'
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U postgres']
interval: 5s
timeout: 5s
retries: 5
restart: always
networks:
- lobe-network
minio:
image: minio/minio
container_name: lobe-minio
network_mode: 'service:network-service'
volumes:
- './s3_data:/etc/minio/data'
environment:
- 'MINIO_API_CORS_ALLOW_ORIGIN=*'
env_file:
- .env
restart: always
entrypoint: >
/bin/sh -c "
minio server /etc/minio/data --address ':${MINIO_PORT}' --console-address ':9001' &
MINIO_PID=\$!
while ! curl -s http://localhost:${MINIO_PORT}/minio/health/live; do
echo 'Waiting for MinIO to start...'
sleep 1
done
sleep 5
mc alias set myminio http://localhost:${MINIO_PORT} ${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD}
echo 'Creating bucket ${MINIO_LOBE_BUCKET}'
mc mb myminio/${MINIO_LOBE_BUCKET}
wait \$MINIO_PID
"
casdoor:
image: casbin/casdoor
container_name: lobe-casdoor
entrypoint: /bin/sh -c './server --createDatabase=true'
network_mode: 'service:network-service'
depends_on:
postgresql:
condition: service_healthy
environment:
httpport: ${CASDOOR_PORT}
RUNNING_IN_DOCKER: 'true'
driverName: 'postgres'
dataSourceName: 'user=postgres password=${POSTGRES_PASSWORD} host=postgresql port=5432 sslmode=disable dbname=casdoor'
runmode: 'dev'
volumes:
- ./init_data.json:/init_data.json
env_file:
- .env
searxng:
image: searxng/searxng
container_name: lobe-searxng
volumes:
- './searxng-settings.yml:/etc/searxng/settings.yml'
environment:
- 'SEARXNG_SETTINGS_FILE=/etc/searxng/settings.yml'
restart: always
networks:
- lobe-network
env_file:
- .env
# lobe:
# image: lobehub/lobe-chat-database
# container_name: lobe-chat
# network_mode: 'service:network-service'
# depends_on:
# postgresql:
# condition: service_healthy
# network-service:
# condition: service_started
# minio:
# condition: service_started
# casdoor:
# condition: service_started
# environment:
# - 'NEXT_AUTH_SSO_PROVIDERS=casdoor'
# - 'KEY_VAULTS_SECRET=Kix2wcUONd4CX51E/ZPAd36BqM4wzJgKjPtz2sGztqQ='
# - 'NEXT_AUTH_SECRET=NX2kaPE923dt6BL2U8e9oSre5RfoT7hg'
# - 'DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgresql:5432/${LOBE_DB_NAME}'
# - 'S3_BUCKET=${MINIO_LOBE_BUCKET}'
# - 'S3_ENABLE_PATH_STYLE=1'
# - 'S3_ACCESS_KEY=${MINIO_ROOT_USER}'
# - 'S3_ACCESS_KEY_ID=${MINIO_ROOT_USER}'
# - 'S3_SECRET_ACCESS_KEY=${MINIO_ROOT_PASSWORD}'
# - 'LLM_VISION_IMAGE_USE_BASE64=1'
# - 'S3_SET_ACL=0'
# - 'SEARXNG_URL=http://searxng:8080'
# env_file:
# - .env
# restart: always
# entrypoint: >
# /bin/sh -c "
# /bin/node /app/startServer.js &
# LOBE_PID=\$!
# sleep 3
# if [ $(wget --timeout=5 --spider --server-response ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep -c 'HTTP/1.1 200 OK') -eq 0 ]; then
# echo '⚠Warining: Unable to fetch OIDC configuration from Casdoor'
# echo 'Request URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration'
# echo 'Read more at: https://lobehub.com/docs/self-hosting/server-database/docker-compose#necessary-configuration'
# echo ''
# echo '⚠️注意:无法从 Casdoor 获取 OIDC 配置'
# echo '请求 URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration'
# echo '了解更多https://lobehub.com/zh/docs/self-hosting/server-database/docker-compose#necessary-configuration'
# echo ''
# else
# if ! wget -O - --timeout=5 ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep 'issuer' | grep ${AUTH_CASDOOR_ISSUER}; then
# printf '❌Error: The Auth issuer is conflict, Issuer in OIDC configuration is: %s' \$(wget -O - --timeout=5 ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep -E 'issuer.*' | awk -F '\"' '{print \$4}')
# echo ' , but the issuer in .env file is: ${AUTH_CASDOOR_ISSUER} '
# echo 'Request URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration'
# echo 'Read more at: https://lobehub.com/docs/self-hosting/server-database/docker-compose#necessary-configuration'
# echo ''
# printf '❌错误Auth 的 issuer 冲突OIDC 配置中的 issuer 是:%s' \$(wget -O - --timeout=5 ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep -E 'issuer.*' | awk -F '\"' '{print \$4}')
# echo ' , 但 .env 文件中的 issuer 是:${AUTH_CASDOOR_ISSUER} '
# echo '请求 URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration'
# echo '了解更多https://lobehub.com/zh/docs/self-hosting/server-database/docker-compose#necessary-configuration'
# echo ''
# fi
# fi
# if [ $(wget --timeout=5 --spider --server-response ${S3_ENDPOINT}/minio/health/live 2>&1 | grep -c 'HTTP/1.1 200 OK') -eq 0 ]; then
# echo '⚠Warining: Unable to fetch MinIO health status'
# echo 'Request URL: ${S3_ENDPOINT}/minio/health/live'
# echo 'Read more at: https://lobehub.com/docs/self-hosting/server-database/docker-compose#necessary-configuration'
# echo ''
# echo '⚠️注意:无法获取 MinIO 健康状态'
# echo '请求 URL: ${S3_ENDPOINT}/minio/health/live'
# echo '了解更多https://lobehub.com/zh/docs/self-hosting/server-database/docker-compose#necessary-configuration'
# echo ''
# fi
# wait \$LOBE_PID
# "
volumes:
data:
driver: local
s3_data:
driver: local
networks:
lobe-network:
driver: bridge