From 61ecc5dc9865a7c9e60dcb863d242c28e038a68b Mon Sep 17 00:00:00 2001 From: root Date: Sat, 31 Jan 2026 09:51:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=BA=20Linux=20=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=90=86=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=92=8C=E8=87=AA=E5=8A=A8=E9=87=8D=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - build-adminapi-forlinux.sh: 添加 HTTP_PROXY/HTTPS_PROXY 构建参数 - watch-adminapi-forlinux.sh: 添加代理环境变量和 --restart=always - watch-tenantapi-forlinux.sh: 添加代理环境变量和 --restart=always - 代理默认启用,可通过 USE_PROXY=0 禁用 Co-Authored-By: Claude Opus 4.5 --- scripts/build-adminapi-forlinux.sh | 11 ++++++++++- scripts/watch-adminapi-forlinux.sh | 16 ++++++++++++++++ scripts/watch-tenantapi-forlinux.sh | 16 ++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/scripts/build-adminapi-forlinux.sh b/scripts/build-adminapi-forlinux.sh index 59f018e..e8121fb 100755 --- a/scripts/build-adminapi-forlinux.sh +++ b/scripts/build-adminapi-forlinux.sh @@ -19,6 +19,15 @@ if [ "${NO_CACHE:-0}" = "1" ]; then docker_build_args+=(--no-cache) fi +# 3. 代理配置(用于 docker build 阶段访问 nuget.org) +proxy_host="172.18.0.1" +proxy_port="7890" +if [ "${USE_PROXY:-1}" = "1" ]; then + docker_build_args+=(--build-arg "HTTP_PROXY=http://${proxy_host}:${proxy_port}") + docker_build_args+=(--build-arg "HTTPS_PROXY=http://${proxy_host}:${proxy_port}") + echo "已启用代理:http://${proxy_host}:${proxy_port}" +fi + # 2. 先构建镜像(减少停机时间;同时避免每次都删除镜像导致缓存失效) echo "开始构建镜像:${image_name} (Configuration=${build_configuration})" docker build -f "${dockerfile_path}" -t "${image_name}" --build-arg "BUILD_CONFIGURATION=${build_configuration}" "${docker_build_args[@]}" "${repo_root}" @@ -40,7 +49,7 @@ if [ -n "${docker_network}" ]; then fi echo "运行新容器:${container_name} (端口映射 7801:7801,环境 Development,网络 ${docker_network})" -docker run -d --name "${container_name}" "${run_args[@]}" -e ASPNETCORE_ENVIRONMENT=Development -p 7801:7801 "${image_name}" +docker run -d --name "${container_name}" "${run_args[@]}" --restart=always -e ASPNETCORE_ENVIRONMENT=Development -p 7801:7801 "${image_name}" echo "完成。镜像:${image_name},容器:${container_name}。Swagger 访问:http://localhost:7801/swagger" # 6. 交互式终端下暂停,方便查看输出 if [ -t 0 ]; then diff --git a/scripts/watch-adminapi-forlinux.sh b/scripts/watch-adminapi-forlinux.sh index d2c9fca..a1969a6 100755 --- a/scripts/watch-adminapi-forlinux.sh +++ b/scripts/watch-adminapi-forlinux.sh @@ -68,9 +68,24 @@ if [ -n "${docker_network}" ]; then run_args+=(--network "${docker_network}") fi +# 4. 代理配置(用于 dotnet restore 访问 nuget.org) +proxy_host="172.18.0.1" +proxy_port="7890" +proxy_env_args=() +if [ "${USE_PROXY:-1}" = "1" ]; then + proxy_env_args+=(-e "HTTP_PROXY=http://${proxy_host}:${proxy_port}") + proxy_env_args+=(-e "HTTPS_PROXY=http://${proxy_host}:${proxy_port}") + proxy_env_args+=(-e "http_proxy=http://${proxy_host}:${proxy_port}") + proxy_env_args+=(-e "https_proxy=http://${proxy_host}:${proxy_port}") + proxy_env_args+=(-e "NO_PROXY=localhost,127.0.0.1,::1") + proxy_env_args+=(-e "no_proxy=localhost,127.0.0.1,::1") + echo "已启用代理:http://${proxy_host}:${proxy_port}" +fi + echo "启动 dotnet watch(后台运行)..." docker run -d --name "${container_name}" \ "${run_args[@]}" \ + --restart=always \ -p "${host_port}:${container_port}" \ -v "${repo_root}":/src \ -w /src \ @@ -79,6 +94,7 @@ docker run -d --name "${container_name}" \ -e ASPNETCORE_URLS="http://+:${container_port}" \ -e DOTNET_USE_POLLING_FILE_WATCHER=1 \ -e DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER=1 \ + "${proxy_env_args[@]}" \ "${sdk_image}" \ dotnet watch --project "${project_path}" run --no-launch-profile diff --git a/scripts/watch-tenantapi-forlinux.sh b/scripts/watch-tenantapi-forlinux.sh index ae0b653..f759dbc 100755 --- a/scripts/watch-tenantapi-forlinux.sh +++ b/scripts/watch-tenantapi-forlinux.sh @@ -61,9 +61,24 @@ if [ -n "${docker_network}" ]; then run_args+=(--network "${docker_network}") fi +# 4. 代理配置(用于 dotnet restore 访问 nuget.org) +proxy_host="172.18.0.1" +proxy_port="7890" +proxy_env_args=() +if [ "${USE_PROXY:-1}" = "1" ]; then + proxy_env_args+=(-e "HTTP_PROXY=http://${proxy_host}:${proxy_port}") + proxy_env_args+=(-e "HTTPS_PROXY=http://${proxy_host}:${proxy_port}") + proxy_env_args+=(-e "http_proxy=http://${proxy_host}:${proxy_port}") + proxy_env_args+=(-e "https_proxy=http://${proxy_host}:${proxy_port}") + proxy_env_args+=(-e "NO_PROXY=localhost,127.0.0.1,::1") + proxy_env_args+=(-e "no_proxy=localhost,127.0.0.1,::1") + echo "已启用代理:http://${proxy_host}:${proxy_port}" +fi + echo "启动 dotnet watch(后台运行)..." docker run -d --name "${container_name}" \ "${run_args[@]}" \ + --restart=always \ -p "${host_port}:${container_port}" \ -v "${repo_root}":/src \ -w /src \ @@ -72,6 +87,7 @@ docker run -d --name "${container_name}" \ -e ASPNETCORE_URLS="http://+:${container_port}" \ -e DOTNET_USE_POLLING_FILE_WATCHER=1 \ -e DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER=1 \ + "${proxy_env_args[@]}" \ "${sdk_image}" \ dotnet watch --project "${project_path}" run --no-launch-profile