Files
TakeoutSaaS.Docs/scripts/build-adminapi-forlinux.sh
root 61ecc5dc98 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>
2026-01-31 09:51:01 +08:00

58 lines
2.6 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# 用法:在 Linux 终端执行本脚本,自动构建并重启 AdminApi 容器。
# 前置:已安装并运行 Docker。
set -euo pipefail
# 0. 遇到异常时输出错误信息,方便查看
trap 'echo "发生错误:${BASH_COMMAND}" >&2' ERR
# 1. 基本变量(脚本位于 repo_root/scripts下移一层再上跳到仓库根
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
repo_root="$(cd "${script_dir}/.." && pwd)"
image_name="${IMAGE_NAME:-takeout.api.admin:dev}"
container_name="${CONTAINER_NAME:-takeout.api.admin}"
build_configuration="${BUILD_CONFIGURATION:-Release}"
docker_network="${DOCKER_NETWORK:-web_apps}"
dockerfile_path="${repo_root}/src/Api/TakeoutSaaS.AdminApi/Dockerfile"
echo "工作目录:${repo_root}"
docker_build_args=()
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}"
# 3. 停止并删除旧容器
if docker ps -a --format '{{.Names}}' | grep -qx "${container_name}"; then
echo "发现旧容器,正在移除:${container_name}"
docker rm -f "${container_name}" >/dev/null
fi
# 4. 运行新容器并映射端口
run_args=()
if [ -n "${docker_network}" ]; then
if ! docker network inspect "${docker_network}" >/dev/null 2>&1; then
echo "Docker network 不存在,正在创建:${docker_network}"
docker network create "${docker_network}" >/dev/null
fi
run_args+=(--network "${docker_network}")
fi
echo "运行新容器:${container_name} (端口映射 7801:7801环境 Development网络 ${docker_network})"
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
read -r -p "按回车关闭窗口" _
fi