Commit 71168801 authored by uuo00_n's avatar uuo00_n

feat(docs): 更新启动脚本使用说明,添加演示数据初始化选项

parent 2c99e8f1
......@@ -24,8 +24,8 @@
# 1) 首次生成 .env
./start.sh init-env
# 2) 启动全部服务
./start.sh up
# 2) 启动全部服务(首次建议带演示数据初始化)
./start.sh up --init-data
# 3) 查看状态 / 日志
./start.sh ps
......@@ -36,11 +36,14 @@
1. 执行 `./start.sh init-env` 会调用 `scripts/generate_secrets.py` 自动生成根目录 `.env`
2. 生成后至少检查这些配置:`DB_PASSWORD``JWT_SECRET``DIFY_API_KEY_LLM``DIFY_API_KEY_SECURITY`
3. `./start.sh up` 启动时会自动读取根目录 `.env` 注入各服务容器。
4. 修改 `.env` 后,优先执行 `./start.sh rebuild` 使配置生效(或 `./start.sh down && ./start.sh up` 全量重启)。
4. 如需初始化演示数据(默认账号、教务示例、敏感词),执行 `./start.sh init-data` 或直接 `./start.sh up --init-data`
5. 修改 `.env` 后,优先执行 `./start.sh rebuild` 使配置生效(或 `./start.sh down && ./start.sh up` 全量重启)。
### 常用脚本命令
```bash
./start.sh up # 启动全部服务
./start.sh up # 启动全部服务(不初始化数据)
./start.sh up --init-data # 启动并自动初始化演示数据
./start.sh init-data # 单独执行演示数据初始化(会提示确认)
./start.sh rebuild # 重构全部服务容器
./start.sh rebuild auth-service # 重构指定服务容器
./start.sh down # 停止并删除容器
......
......@@ -12,8 +12,8 @@
# 1) 首次生成 .env
./start.sh init-env
# 2) 启动全部服务
./start.sh up
# 2) 启动全部服务并初始化演示数据
./start.sh up --init-data
# 3) 查看状态与日志
./start.sh ps
......@@ -23,13 +23,15 @@
`.env` 使用说明:
1. `./start.sh init-env` 会自动生成根目录 `.env`
2. 启动时 `./start.sh up` 会把 `.env` 注入所有容器。
3. Dify 建议分别填写 `DIFY_API_KEY_LLM`(LLM 服务)与 `DIFY_API_KEY_SECURITY`(Security 服务);旧版 `DIFY_API_KEY` 仍兼容。
4. 修改 `.env` 后可重构容器生效:`./start.sh rebuild`(或全量重启:`./start.sh down && ./start.sh up`)。
5. 如果 `.env` 权限异常,可执行:`sudo chown $USER:staff .env && chmod 640 .env`
3. 首次启动如需默认账号/教务示例/敏感词,请执行 `./start.sh init-data`(或直接 `./start.sh up --init-data`)。
4. Dify 建议分别填写 `DIFY_API_KEY_LLM`(LLM 服务)与 `DIFY_API_KEY_SECURITY`(Security 服务);旧版 `DIFY_API_KEY` 仍兼容。
5. 修改 `.env` 后可重构容器生效:`./start.sh rebuild`(或全量重启:`./start.sh down && ./start.sh up`)。
6. 如果 `.env` 权限异常,可执行:`sudo chown $USER:staff .env && chmod 640 .env`
常用维护命令:
- `./start.sh rebuild [service]`:重构容器(默认全部,可指定服务)
- `./start.sh rm <service...>`:删除指定容器(可多个)
- `./start.sh init-data [--yes]`:初始化演示数据(会重置业务数据)
## 系统架构
......
......@@ -14,8 +14,8 @@
# 1) 首次生成 .env
./start.sh init-env
# 2) 启动全部服务
./start.sh up
# 2) 启动全部服务并初始化演示数据
./start.sh up --init-data
# 3) 查看状态
./start.sh ps
......@@ -60,7 +60,10 @@
```bash
./start.sh help # 查看帮助
./start.sh init-env # 生成 .env(首次)
./start.sh up # 构建并启动所有服务
./start.sh up # 构建并启动所有服务(不初始化数据)
./start.sh up --init-data # 启动后自动执行数据库初始化脚本
./start.sh init-data # 单独执行数据库初始化脚本(会提示确认)
./start.sh init-data --yes # 单独执行数据库初始化脚本(跳过确认)
./start.sh rebuild # 重构全部服务容器
./start.sh rebuild gateway # 重构指定服务容器
./start.sh down # 停止并删除容器
......@@ -101,3 +104,12 @@ chmod 640 .env
./start.sh reset
./start.sh up
```
### 6.3 为什么没有默认账号(如 `admin_edu`)
默认 `./start.sh up` 不会自动执行 `scripts/init_postgres.sql` 和其他初始化脚本。
如需写入演示账号/数据,请执行:
```bash
./start.sh init-data
```
......@@ -24,7 +24,8 @@ LLM Filter 统一脚本
用法:
./start.sh init-env 生成 .env(仅首次)
./start.sh up 构建并启动所有服务
./start.sh up [--init-data] 构建并启动所有服务(可选初始化演示数据)
./start.sh init-data [--yes] 初始化 PostgreSQL/Mongo 演示数据
./start.sh rebuild [svc] 重构容器(默认全部,可指定服务)
./start.sh down 停止并删除容器
./start.sh rm <svc...> 删除指定容器(可多个)
......@@ -36,7 +37,7 @@ LLM Filter 统一脚本
推荐首次使用:
1) ./start.sh init-env
2) 编辑 .env(至少确认 DB_PASSWORD / JWT_SECRET / DIFY_API_KEY_LLM / DIFY_API_KEY_SECURITY)
3) ./start.sh up
3) ./start.sh up --init-data
EOF
}
......@@ -65,8 +66,80 @@ cmd_init_env() {
echo "[INFO] .env 生成完成。请检查关键配置后再启动。"
}
load_env_vars() {
require_env
# shellcheck disable=SC1091
set -a
source .env
set +a
}
wait_for_postgres() {
local retries=30
local i
for ((i=1; i<=retries; i++)); do
if "${COMPOSE_CMD[@]}" exec -T -e PGPASSWORD="${DB_PASSWORD}" postgres \
pg_isready -U "${DB_USER}" -d "${DB_NAME}" >/dev/null 2>&1; then
return 0
fi
sleep 2
done
echo "[ERROR] PostgreSQL 未就绪,初始化中止。"
exit 1
}
cmd_init_data() {
require_env
local yes_flag="${1:-}"
if [ "${yes_flag}" != "--yes" ]; then
echo "[WARN] 将执行初始化脚本并重置业务数据:"
echo " - scripts/init_postgres.sql (TRUNCATE + 默认账号)"
echo " - scripts/init_edu_postgres.py (教务演示数据)"
echo " - scripts/init_mongo.py (敏感词/对话相关集合)"
read -r -p "确认继续? (yes/no): " answer
if [ "${answer}" != "yes" ]; then
echo "[INFO] 已取消。"
return 0
fi
fi
load_env_vars
echo "[INFO] 确保初始化所需服务已启动..."
"${COMPOSE_CMD[@]}" up -d postgres redis mongo llm-service
echo "[INFO] 等待 PostgreSQL 就绪..."
wait_for_postgres
echo "[INFO] 执行 PostgreSQL 基础初始化 (init_postgres.sql)..."
cat scripts/init_postgres.sql | "${COMPOSE_CMD[@]}" exec -T \
-e PGPASSWORD="${DB_PASSWORD}" \
postgres psql -v ON_ERROR_STOP=1 -U "${DB_USER}" -d "${DB_NAME}"
echo "[INFO] 执行 PostgreSQL 教务演示数据初始化 (init_edu_postgres.py)..."
"${COMPOSE_CMD[@]}" exec -T \
-e DB_HOST=postgres \
-e DB_PORT=5432 \
-e DB_USER="${DB_USER}" \
-e DB_PASSWORD="${DB_PASSWORD}" \
-e DB_NAME="${DB_NAME}" \
llm-service python /app/scripts/init_edu_postgres.py
echo "[INFO] 执行 MongoDB 初始化 (init_mongo.py)..."
"${COMPOSE_CMD[@]}" exec -T llm-service python /app/scripts/init_mongo.py
echo "[INFO] 数据初始化完成。"
}
cmd_up() {
require_env
local init_data_flag="${1:-}"
if [ "${init_data_flag}" != "" ] && [ "${init_data_flag}" != "--init-data" ]; then
echo "[ERROR] up 仅支持可选参数: --init-data"
echo "[INFO] 用法: ./start.sh up [--init-data]"
exit 1
fi
"${COMPOSE_CMD[@]}" up -d --build
echo "[INFO] 服务启动完成。"
echo "[INFO] 网关地址: http://localhost:8080"
......@@ -75,6 +148,10 @@ cmd_up() {
echo " - http://localhost:8080/docs/edu/"
echo " - http://localhost:8080/docs/llm/"
echo " - http://localhost:8080/docs/security/"
if [ "${init_data_flag}" = "--init-data" ]; then
cmd_init_data --yes
fi
}
cmd_rebuild() {
......@@ -128,8 +205,11 @@ case "$ACTION" in
init-env)
cmd_init_env
;;
init-data)
cmd_init_data "${2:-}"
;;
up)
cmd_up
cmd_up "${2:-}"
;;
rebuild)
cmd_rebuild "${@:2}"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment