feat: 为 Linux 构建脚本添加代理配置和自动重启
- 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 <noreply@anthropic.com>
This commit is contained in:
@@ -19,6 +19,15 @@ if [ "${NO_CACHE:-0}" = "1" ]; then
|
|||||||
docker_build_args+=(--no-cache)
|
docker_build_args+=(--no-cache)
|
||||||
fi
|
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. 先构建镜像(减少停机时间;同时避免每次都删除镜像导致缓存失效)
|
# 2. 先构建镜像(减少停机时间;同时避免每次都删除镜像导致缓存失效)
|
||||||
echo "开始构建镜像:${image_name} (Configuration=${build_configuration})"
|
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}"
|
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
|
fi
|
||||||
|
|
||||||
echo "运行新容器:${container_name} (端口映射 7801:7801,环境 Development,网络 ${docker_network})"
|
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"
|
echo "完成。镜像:${image_name},容器:${container_name}。Swagger 访问:http://localhost:7801/swagger"
|
||||||
# 6. 交互式终端下暂停,方便查看输出
|
# 6. 交互式终端下暂停,方便查看输出
|
||||||
if [ -t 0 ]; then
|
if [ -t 0 ]; then
|
||||||
|
|||||||
@@ -68,9 +68,24 @@ if [ -n "${docker_network}" ]; then
|
|||||||
run_args+=(--network "${docker_network}")
|
run_args+=(--network "${docker_network}")
|
||||||
fi
|
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(后台运行)..."
|
echo "启动 dotnet watch(后台运行)..."
|
||||||
docker run -d --name "${container_name}" \
|
docker run -d --name "${container_name}" \
|
||||||
"${run_args[@]}" \
|
"${run_args[@]}" \
|
||||||
|
--restart=always \
|
||||||
-p "${host_port}:${container_port}" \
|
-p "${host_port}:${container_port}" \
|
||||||
-v "${repo_root}":/src \
|
-v "${repo_root}":/src \
|
||||||
-w /src \
|
-w /src \
|
||||||
@@ -79,6 +94,7 @@ docker run -d --name "${container_name}" \
|
|||||||
-e ASPNETCORE_URLS="http://+:${container_port}" \
|
-e ASPNETCORE_URLS="http://+:${container_port}" \
|
||||||
-e DOTNET_USE_POLLING_FILE_WATCHER=1 \
|
-e DOTNET_USE_POLLING_FILE_WATCHER=1 \
|
||||||
-e DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER=1 \
|
-e DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER=1 \
|
||||||
|
"${proxy_env_args[@]}" \
|
||||||
"${sdk_image}" \
|
"${sdk_image}" \
|
||||||
dotnet watch --project "${project_path}" run --no-launch-profile
|
dotnet watch --project "${project_path}" run --no-launch-profile
|
||||||
|
|
||||||
|
|||||||
@@ -61,9 +61,24 @@ if [ -n "${docker_network}" ]; then
|
|||||||
run_args+=(--network "${docker_network}")
|
run_args+=(--network "${docker_network}")
|
||||||
fi
|
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(后台运行)..."
|
echo "启动 dotnet watch(后台运行)..."
|
||||||
docker run -d --name "${container_name}" \
|
docker run -d --name "${container_name}" \
|
||||||
"${run_args[@]}" \
|
"${run_args[@]}" \
|
||||||
|
--restart=always \
|
||||||
-p "${host_port}:${container_port}" \
|
-p "${host_port}:${container_port}" \
|
||||||
-v "${repo_root}":/src \
|
-v "${repo_root}":/src \
|
||||||
-w /src \
|
-w /src \
|
||||||
@@ -72,6 +87,7 @@ docker run -d --name "${container_name}" \
|
|||||||
-e ASPNETCORE_URLS="http://+:${container_port}" \
|
-e ASPNETCORE_URLS="http://+:${container_port}" \
|
||||||
-e DOTNET_USE_POLLING_FILE_WATCHER=1 \
|
-e DOTNET_USE_POLLING_FILE_WATCHER=1 \
|
||||||
-e DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER=1 \
|
-e DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER=1 \
|
||||||
|
"${proxy_env_args[@]}" \
|
||||||
"${sdk_image}" \
|
"${sdk_image}" \
|
||||||
dotnet watch --project "${project_path}" run --no-launch-profile
|
dotnet watch --project "${project_path}" run --no-launch-profile
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user