2025-07-05 23:43:46 +08:00
|
|
|
#!/bin/bash
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
|
|
# DockerContext: orion-visor
|
|
|
|
|
|
|
|
|
|
# 版本号
|
2025-10-20 00:23:48 +08:00
|
|
|
version=2.5.4
|
2025-07-05 23:43:46 +08:00
|
|
|
# 是否构建 service
|
|
|
|
|
export build_service=false
|
|
|
|
|
# 是否构建 ui
|
|
|
|
|
export build_ui=false
|
|
|
|
|
|
|
|
|
|
# 解析命令行参数
|
|
|
|
|
for arg in "$@"; do
|
|
|
|
|
case "$arg" in
|
|
|
|
|
-service|--build-service)
|
|
|
|
|
export build_service=true
|
|
|
|
|
;;
|
|
|
|
|
-ui|--build-ui)
|
|
|
|
|
export build_ui=true
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
# 执行构建 service
|
|
|
|
|
function run_build_service() {
|
|
|
|
|
echo "开始执行 service 构建流程..."
|
|
|
|
|
|
|
|
|
|
local builder_dockerfile="./builder/Dockerfile.service"
|
|
|
|
|
local builder_image="orion-visor-service-builder"
|
|
|
|
|
local builder_container="orion-visor-service-builder-ctn"
|
|
|
|
|
local builder_output="/build/orion-visor-launch/target/orion-visor-launch.jar"
|
|
|
|
|
local target_dir="../orion-visor-launch/target"
|
|
|
|
|
local target_jar="$target_dir/orion-visor-launch.jar"
|
|
|
|
|
|
|
|
|
|
# 确保目标目录存在
|
|
|
|
|
if [ ! -d "$target_dir" ]; then
|
|
|
|
|
echo "创建目标目录: $target_dir"
|
|
|
|
|
mkdir -p "$target_dir"
|
|
|
|
|
else
|
|
|
|
|
# 如果 jar 已存在, 先删除
|
|
|
|
|
if [ -f "$target_jar" ]; then
|
|
|
|
|
echo "删除已有文件: $target_jar"
|
|
|
|
|
rm -f "$target_jar"
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# 清理旧容器
|
|
|
|
|
local container_id=$(docker ps -a -f "name=$builder_container" --format "{{.ID}}")
|
|
|
|
|
if [ -n "$container_id" ]; then
|
|
|
|
|
echo "删除旧容器: $builder_container"
|
|
|
|
|
docker rm -f "$container_id"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# 构建构建镜像
|
|
|
|
|
echo "正在构建 service builder image..."
|
|
|
|
|
docker build \
|
|
|
|
|
-f "$builder_dockerfile" \
|
|
|
|
|
-t "$builder_image:$version" ../
|
|
|
|
|
|
|
|
|
|
# 创建一个临时容器用于拷贝文件
|
|
|
|
|
echo "创建临时容器以提取 jar 文件..."
|
|
|
|
|
docker create --name "$builder_container" "$builder_image:$version" > /dev/null
|
|
|
|
|
|
|
|
|
|
# 拷贝构建好的 jar 文件到目标路径
|
|
|
|
|
echo "正在从容器中拷贝 jar 文件..."
|
|
|
|
|
docker cp "$builder_container:$builder_output" "$target_jar"
|
|
|
|
|
|
|
|
|
|
# 清理临时容器
|
|
|
|
|
docker rm -f "$builder_container" > /dev/null
|
|
|
|
|
echo "后端构建完成, jar 文件已保存至: $target_jar"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# 执行构建 ui
|
|
|
|
|
function run_build_ui() {
|
|
|
|
|
echo "开始执行 ui 构建流程..."
|
|
|
|
|
|
|
|
|
|
local builder_dockerfile="./builder/Dockerfile.ui"
|
|
|
|
|
local builder_image="orion-visor-ui-builder"
|
|
|
|
|
local builder_container="orion-visor-ui-builder-ctn"
|
|
|
|
|
local builder_output="/build/dist"
|
|
|
|
|
local target_dir="../orion-visor-ui/dist"
|
|
|
|
|
|
|
|
|
|
# 如果 dist 已存在, 先删除
|
|
|
|
|
if [ -d "$target_dir" ]; then
|
|
|
|
|
echo "删除已有目录: $target_dir"
|
|
|
|
|
rm -rf "$target_dir"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# 清理旧容器
|
|
|
|
|
local container_id=$(docker ps -a -f "name=$builder_container" --format "{{.ID}}")
|
|
|
|
|
if [ -n "$container_id" ]; then
|
|
|
|
|
echo "删除旧容器: $builder_container"
|
|
|
|
|
docker rm -f "$container_id"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# 构建前端镜像
|
|
|
|
|
echo "正在构建 ui builder image..."
|
|
|
|
|
docker build \
|
|
|
|
|
-f "$builder_dockerfile" \
|
|
|
|
|
-t "$builder_image:$version" ../
|
|
|
|
|
|
|
|
|
|
# 创建临时容器用于拷贝文件
|
|
|
|
|
echo "创建临时容器以提取 dist 文件..."
|
|
|
|
|
docker create --name "$builder_container" "$builder_image:$version" > /dev/null
|
|
|
|
|
|
|
|
|
|
# 拷贝 dist 目录
|
|
|
|
|
echo "正在从容器中拷贝 dist 文件..."
|
|
|
|
|
docker cp "$builder_container:$builder_output" "$target_dir"
|
|
|
|
|
|
|
|
|
|
# 清理临时容器
|
|
|
|
|
docker rm "$builder_container" > /dev/null
|
|
|
|
|
|
|
|
|
|
echo "前端构建完成, dist 已保存至: $target_dir"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# 构建项目-service
|
|
|
|
|
if [ "$build_service" = true ]; then
|
|
|
|
|
run_build_service
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# 构建项目-ui
|
|
|
|
|
if [ "$build_ui" = true ]; then
|
|
|
|
|
run_build_ui
|
|
|
|
|
fi
|