build-flow.api/run-dev.sh

33 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# BuildFlow Host 启动脚本
# 真实端口来源:src/BuildFlow.Host/appsettings.json 的 Kestrel.Endpoints.Http.Url(当前 5667)。
# 不用 --urls 强制端口 —— 它无法覆盖 Kestrel.Endpoints 配置节,写 5200 会造成"脚本说 5200、
# 实际监听 5667"的错位(2026-08-21 修正,详见 OB《01-环境配置总览》)。
set -e
# 定位项目根目录(.env 若存在则加载)
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
ENV_FILE="$PROJECT_ROOT/.env"
# 1. 清掉可能残留的未展开模板 env 变量,避免脏值干扰
unset $(env | grep -E '^Ai__|^Ai_|^S3__|^Jwt__|^RabbitMq__|^OpenTelemetry__|^ConnectionStrings__|^Cookie__|^FileService__|^REDIS_|^INFRA_|^PG_|^MONGO_|^AI_' | cut -d= -f1)
# 2. 可选:加载项目根 .env(若自行维护)。凭据主力是 appsettings.Secrets.json + {INFRA_HOST} 切换机制,
# 没有项目根 .env 也能正常启动 —— 中间件地址由 appsettings.json 的 Middleware:Host 决定。
if [ -f "$ENV_FILE" ]; then
set -a
# shellcheck disable=SC1090
source "$ENV_FILE"
set +a
echo "[run-dev] 已加载 $ENV_FILE"
else
echo "[run-dev] 未找到 $ENV_FILE(可选)—— 使用 appsettings.json + Secrets.json"
fi
# 3. dotnet 的层级配置用 __ 双下划线,.env 里若定义 ConnectionStrings__Rag 等变量会自动覆盖 appsettings.json。
# 4. 启动 BuildFlow Host(端口由 Kestrel.Endpoints 决定,当前 5667)
cd "$SCRIPT_DIR/src/BuildFlow.Host"
exec dotnet run --no-launch-profile