#!/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