fix: 修复 TenantApi watch 根目录识别
This commit is contained in:
@@ -5,7 +5,6 @@ set -euo pipefail
|
|||||||
trap 'echo "发生错误:${BASH_COMMAND}" >&2' ERR
|
trap 'echo "发生错误:${BASH_COMMAND}" >&2' ERR
|
||||||
|
|
||||||
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
repo_root="$(cd "${script_dir}/.." && pwd)"
|
|
||||||
|
|
||||||
container_name="${CONTAINER_NAME:-takeout.api.tenant}"
|
container_name="${CONTAINER_NAME:-takeout.api.tenant}"
|
||||||
docker_network="${DOCKER_NETWORK:-web_apps}"
|
docker_network="${DOCKER_NETWORK:-web_apps}"
|
||||||
@@ -16,6 +15,22 @@ nuget_volume="${NUGET_VOLUME:-takeout-nuget}"
|
|||||||
project_path="${PROJECT_PATH:-src/Api/TakeoutSaaS.TenantApi/TakeoutSaaS.TenantApi.csproj}"
|
project_path="${PROJECT_PATH:-src/Api/TakeoutSaaS.TenantApi/TakeoutSaaS.TenantApi.csproj}"
|
||||||
environment="${ASPNETCORE_ENVIRONMENT:-Development}"
|
environment="${ASPNETCORE_ENVIRONMENT:-Development}"
|
||||||
|
|
||||||
|
repo_root=""
|
||||||
|
candidate_dir="${script_dir}"
|
||||||
|
for _ in 0 1 2 3 4 5; do
|
||||||
|
if [ -f "${candidate_dir}/${project_path}" ] || [ -f "${candidate_dir}/TakeoutSaaS.sln" ]; then
|
||||||
|
repo_root="${candidate_dir}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
candidate_dir="$(cd "${candidate_dir}/.." && pwd)"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "${repo_root}" ]; then
|
||||||
|
echo "未找到仓库根目录(缺少 ${project_path} 或 TakeoutSaaS.sln),请在 TenantApi 仓库中运行该脚本。" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
echo "工作目录:${repo_root}"
|
echo "工作目录:${repo_root}"
|
||||||
echo "使用 SDK 镜像:${sdk_image}"
|
echo "使用 SDK 镜像:${sdk_image}"
|
||||||
echo "容器:${container_name} 端口:${host_port}:${container_port} 网络:${docker_network}"
|
echo "容器:${container_name} 端口:${host_port}:${container_port} 网络:${docker_network}"
|
||||||
@@ -62,4 +77,3 @@ docker run -d --name "${container_name}" \
|
|||||||
|
|
||||||
echo "已启动。查看日志:docker logs -f ${container_name}"
|
echo "已启动。查看日志:docker logs -f ${container_name}"
|
||||||
echo "Swagger:http://localhost:${host_port}/api/docs (兼容入口 /swagger)"
|
echo "Swagger:http://localhost:${host_port}/api/docs (兼容入口 /swagger)"
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ trap {
|
|||||||
$ErrorActionPreference = 'Stop'
|
$ErrorActionPreference = 'Stop'
|
||||||
|
|
||||||
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||||
$repoRoot = Split-Path -Parent $scriptDir
|
|
||||||
|
|
||||||
$containerName = if ($env:CONTAINER_NAME) { $env:CONTAINER_NAME } else { 'takeout.api.tenant' }
|
$containerName = if ($env:CONTAINER_NAME) { $env:CONTAINER_NAME } else { 'takeout.api.tenant' }
|
||||||
$dockerNetwork = if ($env:DOCKER_NETWORK) { $env:DOCKER_NETWORK } else { 'web_apps' }
|
$dockerNetwork = if ($env:DOCKER_NETWORK) { $env:DOCKER_NETWORK } else { 'web_apps' }
|
||||||
@@ -23,6 +22,42 @@ $nugetVolume = if ($env:NUGET_VOLUME) { $env:NUGET_VOLUME } else { 'takeout-nuge
|
|||||||
$projectPath = if ($env:PROJECT_PATH) { $env:PROJECT_PATH } else { 'src/Api/TakeoutSaaS.TenantApi/TakeoutSaaS.TenantApi.csproj' }
|
$projectPath = if ($env:PROJECT_PATH) { $env:PROJECT_PATH } else { 'src/Api/TakeoutSaaS.TenantApi/TakeoutSaaS.TenantApi.csproj' }
|
||||||
$environment = if ($env:ASPNETCORE_ENVIRONMENT) { $env:ASPNETCORE_ENVIRONMENT } else { 'Development' }
|
$environment = if ($env:ASPNETCORE_ENVIRONMENT) { $env:ASPNETCORE_ENVIRONMENT } else { 'Development' }
|
||||||
|
|
||||||
|
function Resolve-RepoRoot {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]$startDir,
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]$projectPath
|
||||||
|
)
|
||||||
|
|
||||||
|
$normalizedProjectPath = $projectPath -replace '/', [System.IO.Path]::DirectorySeparatorChar
|
||||||
|
$current = $startDir
|
||||||
|
|
||||||
|
for ($i = 0; $i -lt 6; $i++) {
|
||||||
|
if (Test-Path (Join-Path $current $normalizedProjectPath)) {
|
||||||
|
return $current
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Test-Path (Join-Path $current 'TakeoutSaaS.sln')) {
|
||||||
|
return $current
|
||||||
|
}
|
||||||
|
|
||||||
|
$parent = Split-Path -Parent $current
|
||||||
|
if ([string]::IsNullOrWhiteSpace($parent) -or $parent -eq $current) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
$current = $parent
|
||||||
|
}
|
||||||
|
|
||||||
|
return $null
|
||||||
|
}
|
||||||
|
|
||||||
|
$repoRoot = Resolve-RepoRoot -startDir $scriptDir -projectPath $projectPath
|
||||||
|
if (-not $repoRoot) {
|
||||||
|
throw "未找到仓库根目录(缺少 $projectPath 或 TakeoutSaaS.sln),请在 TenantApi 仓库中运行该脚本。"
|
||||||
|
}
|
||||||
|
|
||||||
Write-Host "工作目录:$repoRoot"
|
Write-Host "工作目录:$repoRoot"
|
||||||
Write-Host "使用 SDK 镜像:$sdkImage"
|
Write-Host "使用 SDK 镜像:$sdkImage"
|
||||||
Write-Host "容器:$containerName 端口:$hostPort`:$containerPort 网络:$dockerNetwork"
|
Write-Host "容器:$containerName 端口:$hostPort`:$containerPort 网络:$dockerNetwork"
|
||||||
@@ -70,4 +105,3 @@ docker run -d --name $containerName @runArgs `
|
|||||||
|
|
||||||
Write-Host "已启动。查看日志:docker logs -f $containerName"
|
Write-Host "已启动。查看日志:docker logs -f $containerName"
|
||||||
Write-Host "Swagger:http://localhost:$hostPort/api/docs (兼容入口 /swagger)"
|
Write-Host "Swagger:http://localhost:$hostPort/api/docs (兼容入口 /swagger)"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user