fix: 修复 Linux watch 脚本定位仓库根目录
This commit is contained in:
@@ -5,7 +5,6 @@ set -euo pipefail
|
||||
trap 'echo "发生错误:${BASH_COMMAND}" >&2' ERR
|
||||
|
||||
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
repo_root="$(cd "${script_dir}/.." && pwd)"
|
||||
|
||||
container_name="${CONTAINER_NAME:-takeout.api.admin}"
|
||||
docker_network="${DOCKER_NETWORK:-web_apps}"
|
||||
@@ -16,11 +15,35 @@ nuget_volume="${NUGET_VOLUME:-takeout-nuget}"
|
||||
project_path="${PROJECT_PATH:-src/Api/TakeoutSaaS.AdminApi/TakeoutSaaS.AdminApi.csproj}"
|
||||
environment="${ASPNETCORE_ENVIRONMENT:-Development}"
|
||||
|
||||
repo_root="${REPO_ROOT:-}"
|
||||
if [ -z "${repo_root}" ]; then
|
||||
candidate_dir="${script_dir}"
|
||||
for _ in 0 1 2 3 4 5; do
|
||||
if [ -f "${candidate_dir}/${project_path}" ]; then
|
||||
repo_root="${candidate_dir}"
|
||||
break
|
||||
fi
|
||||
|
||||
if [ -f "${candidate_dir}/AdminApi/${project_path}" ]; then
|
||||
repo_root="${candidate_dir}/AdminApi"
|
||||
break
|
||||
fi
|
||||
|
||||
candidate_dir="$(cd "${candidate_dir}/.." && pwd)"
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -z "${repo_root}" ] || [ ! -f "${repo_root}/${project_path}" ]; then
|
||||
echo "未找到 AdminApi 仓库根目录(缺少 ${project_path}),请设置 REPO_ROOT 或在包含 AdminApi 目录的父级目录中运行该脚本。" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "工作目录:${repo_root}"
|
||||
echo "使用 SDK 镜像:${sdk_image}"
|
||||
echo "容器:${container_name} 端口:${host_port}:${container_port} 网络:${docker_network}"
|
||||
echo "项目:${project_path} 环境:${environment}"
|
||||
|
||||
# Ensure network exists (so it can talk to other services like postgres/redis on the same network).
|
||||
# 1. (空行后) 确保 network 存在(用于连接同网络内的 postgres/redis 等依赖)
|
||||
if [ -n "${docker_network}" ]; then
|
||||
if ! docker network inspect "${docker_network}" >/dev/null 2>&1; then
|
||||
echo "Docker network 不存在,正在创建:${docker_network}"
|
||||
@@ -28,13 +51,13 @@ if [ -n "${docker_network}" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Persist NuGet cache across container restarts to speed up restore/build.
|
||||
# 2. (空行后) 持久化 NuGet 缓存,加速 restore/build
|
||||
if ! docker volume inspect "${nuget_volume}" >/dev/null 2>&1; then
|
||||
echo "NuGet volume 不存在,正在创建:${nuget_volume}"
|
||||
docker volume create "${nuget_volume}" >/dev/null
|
||||
fi
|
||||
|
||||
# Replace existing container (if any).
|
||||
# 3. (空行后) 替换旧容器(如存在)
|
||||
if docker ps -a --format '{{.Names}}' | grep -qx "${container_name}"; then
|
||||
echo "发现旧容器,正在移除:${container_name}"
|
||||
docker rm -f "${container_name}" >/dev/null
|
||||
@@ -55,9 +78,9 @@ docker run -d --name "${container_name}" \
|
||||
-e ASPNETCORE_ENVIRONMENT="${environment}" \
|
||||
-e ASPNETCORE_URLS="http://+:${container_port}" \
|
||||
-e DOTNET_USE_POLLING_FILE_WATCHER=1 \
|
||||
-e DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER=1 \
|
||||
"${sdk_image}" \
|
||||
dotnet watch --project "${project_path}" run
|
||||
dotnet watch --project "${project_path}" run --no-launch-profile
|
||||
|
||||
echo "已启动。查看日志:docker logs -f ${container_name}"
|
||||
echo "Swagger:http://localhost:${host_port}/swagger"
|
||||
|
||||
echo "Swagger:http://localhost:${host_port}/api/docs (兼容入口 /swagger)"
|
||||
|
||||
Reference in New Issue
Block a user