chatui-gpt / entrypoint.sh
james20141606's picture
Update entrypoint.sh
c460cf9 verified
#!/usr/bin/env bash
set -euo pipefail
# 1) 本地 Mongo 启动(容器内)
mkdir -p /data/db
# 清理可能遗留的锁文件,避免上次异常退出导致无法启动
find /data/db -name "*.lock" -type f -exec rm -f {} \;
# 建议绑定到回环即可;写日志到临时目录;后台运行
mongod --dbpath /data/db --bind_ip 127.0.0.1 --logpath /tmp/mongod.log --fork
# 等待 Mongo 就绪(简单轮询 60 次,每次 1s)
for i in $(seq 1 60); do
if mongosh --quiet --host 127.0.0.1 --eval 'db.runCommand({ping:1})' >/dev/null 2>&1; then
echo "MongoDB is up."
break
fi
echo "Waiting for MongoDB to be ready... ($i/60)"
sleep 1
done
# 如果外部没有注入 Atlas 的 MONGODB_URL,就默认用本地
export MONGODB_URL="${MONGODB_URL:-mongodb://127.0.0.1:27017/chatui}"
# 2) 校验外部 LLM 所需环境
: "${OPENAI_BASE_URL:?OPENAI_BASE_URL missing}"
: "${OPENAI_API_KEY:?OPENAI_API_KEY missing}"
: "${MODEL_NAME:?MODEL_NAME missing}"
echo "Using MODEL_NAME=$MODEL_NAME"
echo "Using OPENAI_BASE_URL=$OPENAI_BASE_URL"
echo "MongoDB URL set to: ${MONGODB_URL}"
# 3) 启动 ChatUI
# - 若容器里有 dotenv-cli,则用它加载 /app/.env(若存在)
# - 否则直接起 node
if command -v dotenv >/dev/null 2>&1 && [ -f /app/.env ]; then
exec dotenv -e /app/.env -c -- node /app/build/index.js -- --host 0.0.0.0 --port 3000
else
exec node /app/build/index.js --host 0.0.0.0 --port 3000
fi