Spaces:
Build error
Build error
| 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 |