add
This commit is contained in:
@@ -5,7 +5,6 @@ set -e # 当任何命令失败时立即退出脚本
|
||||
IMAGE_NAME="user-template-api"
|
||||
IMAGE_TAG="1.0.0"
|
||||
FULL_IMAGE="${IMAGE_NAME}:${IMAGE_TAG}"
|
||||
TAR_FILE="${IMAGE_NAME}-${IMAGE_TAG}.tar"
|
||||
|
||||
echo "开始删除现有镜像 ${FULL_IMAGE}..."
|
||||
if sudo docker rmi -f "${FULL_IMAGE}" >/dev/null 2>&1; then
|
||||
@@ -20,23 +19,4 @@ if sudo docker build -t "${FULL_IMAGE}" .; then
|
||||
else
|
||||
echo "错误:镜像构建失败" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "开始处理镜像压缩包..."
|
||||
# 如果存在同名压缩包则删除
|
||||
if [ -f "${TAR_FILE}" ]; then
|
||||
echo "发现现有压缩包 ${TAR_FILE},正在删除..."
|
||||
rm -f "${TAR_FILE}"
|
||||
fi
|
||||
|
||||
# 打包镜像为tar文件
|
||||
echo "开始将镜像 ${FULL_IMAGE} 打包为 ${TAR_FILE}..."
|
||||
if sudo docker save -o "${TAR_FILE}" "${FULL_IMAGE}"; then
|
||||
echo "镜像打包成功!生成文件:${TAR_FILE}"
|
||||
# 添加最高级别的可读写权限
|
||||
sudo chmod 777 "${TAR_FILE}"
|
||||
echo "已为 ${TAR_FILE} 设置最高权限(777)"
|
||||
else
|
||||
echo "错误:镜像打包失败" >&2
|
||||
exit 1
|
||||
fi
|
@@ -5,7 +5,6 @@ set -e # 当任何命令失败时立即退出脚本
|
||||
IMAGE_NAME="user-delete-api"
|
||||
IMAGE_TAG="1.0.0"
|
||||
FULL_IMAGE="${IMAGE_NAME}:${IMAGE_TAG}"
|
||||
TAR_FILE="${IMAGE_NAME}-${IMAGE_TAG}.tar"
|
||||
|
||||
echo "开始删除现有镜像 ${FULL_IMAGE}..."
|
||||
if sudo docker rmi -f "${FULL_IMAGE}" >/dev/null 2>&1; then
|
||||
@@ -20,23 +19,4 @@ if sudo docker build -t "${FULL_IMAGE}" .; then
|
||||
else
|
||||
echo "错误:镜像构建失败" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "开始处理镜像压缩包..."
|
||||
# 如果存在同名压缩包则删除
|
||||
if [ -f "${TAR_FILE}" ]; then
|
||||
echo "发现现有压缩包 ${TAR_FILE},正在删除..."
|
||||
rm -f "${TAR_FILE}"
|
||||
fi
|
||||
|
||||
# 打包镜像为tar文件
|
||||
echo "开始将镜像 ${FULL_IMAGE} 打包为 ${TAR_FILE}..."
|
||||
if sudo docker save -o "${TAR_FILE}" "${FULL_IMAGE}"; then
|
||||
echo "镜像打包成功!生成文件:${TAR_FILE}"
|
||||
# 添加最高级别的可读写权限
|
||||
sudo chmod 777 "${TAR_FILE}"
|
||||
echo "已为 ${TAR_FILE} 设置最高权限(777)"
|
||||
else
|
||||
echo "错误:镜像打包失败" >&2
|
||||
exit 1
|
||||
fi
|
@@ -5,7 +5,6 @@ set -e # 当任何命令失败时立即退出脚本
|
||||
IMAGE_NAME="user-gateway-api"
|
||||
IMAGE_TAG="1.0.0"
|
||||
FULL_IMAGE="${IMAGE_NAME}:${IMAGE_TAG}"
|
||||
TAR_FILE="${IMAGE_NAME}-${IMAGE_TAG}.tar"
|
||||
|
||||
echo "开始删除现有镜像 ${FULL_IMAGE}..."
|
||||
if sudo docker rmi -f "${FULL_IMAGE}" >/dev/null 2>&1; then
|
||||
@@ -20,23 +19,4 @@ if sudo docker build -t "${FULL_IMAGE}" .; then
|
||||
else
|
||||
echo "错误:镜像构建失败" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "开始处理镜像压缩包..."
|
||||
# 如果存在同名压缩包则删除
|
||||
if [ -f "${TAR_FILE}" ]; then
|
||||
echo "发现现有压缩包 ${TAR_FILE},正在删除..."
|
||||
rm -f "${TAR_FILE}"
|
||||
fi
|
||||
|
||||
# 打包镜像为tar文件
|
||||
echo "开始将镜像 ${FULL_IMAGE} 打包为 ${TAR_FILE}..."
|
||||
if sudo docker save -o "${TAR_FILE}" "${FULL_IMAGE}"; then
|
||||
echo "镜像打包成功!生成文件:${TAR_FILE}"
|
||||
# 添加最高级别的可读写权限
|
||||
sudo chmod 777 "${TAR_FILE}"
|
||||
echo "已为 ${TAR_FILE} 设置最高权限(777)"
|
||||
else
|
||||
echo "错误:镜像打包失败" >&2
|
||||
exit 1
|
||||
fi
|
@@ -5,7 +5,6 @@ set -e # 当任何命令失败时立即退出脚本
|
||||
IMAGE_NAME="user-login-api"
|
||||
IMAGE_TAG="1.0.0"
|
||||
FULL_IMAGE="${IMAGE_NAME}:${IMAGE_TAG}"
|
||||
TAR_FILE="${IMAGE_NAME}-${IMAGE_TAG}.tar"
|
||||
|
||||
echo "开始删除现有镜像 ${FULL_IMAGE}..."
|
||||
if sudo docker rmi -f "${FULL_IMAGE}" >/dev/null 2>&1; then
|
||||
@@ -20,23 +19,4 @@ if sudo docker build -t "${FULL_IMAGE}" .; then
|
||||
else
|
||||
echo "错误:镜像构建失败" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "开始处理镜像压缩包..."
|
||||
# 如果存在同名压缩包则删除
|
||||
if [ -f "${TAR_FILE}" ]; then
|
||||
echo "发现现有压缩包 ${TAR_FILE},正在删除..."
|
||||
rm -f "${TAR_FILE}"
|
||||
fi
|
||||
|
||||
# 打包镜像为tar文件
|
||||
echo "开始将镜像 ${FULL_IMAGE} 打包为 ${TAR_FILE}..."
|
||||
if sudo docker save -o "${TAR_FILE}" "${FULL_IMAGE}"; then
|
||||
echo "镜像打包成功!生成文件:${TAR_FILE}"
|
||||
# 添加最高级别的可读写权限
|
||||
sudo chmod 777 "${TAR_FILE}"
|
||||
echo "已为 ${TAR_FILE} 设置最高权限(777)"
|
||||
else
|
||||
echo "错误:镜像打包失败" >&2
|
||||
exit 1
|
||||
fi
|
@@ -5,7 +5,6 @@ set -e # 当任何命令失败时立即退出脚本
|
||||
IMAGE_NAME="user-register-api"
|
||||
IMAGE_TAG="1.0.0"
|
||||
FULL_IMAGE="${IMAGE_NAME}:${IMAGE_TAG}"
|
||||
TAR_FILE="${IMAGE_NAME}-${IMAGE_TAG}.tar"
|
||||
|
||||
echo "开始删除现有镜像 ${FULL_IMAGE}..."
|
||||
if sudo docker rmi -f "${FULL_IMAGE}" >/dev/null 2>&1; then
|
||||
@@ -20,23 +19,4 @@ if sudo docker build -t "${FULL_IMAGE}" .; then
|
||||
else
|
||||
echo "错误:镜像构建失败" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "开始处理镜像压缩包..."
|
||||
# 如果存在同名压缩包则删除
|
||||
if [ -f "${TAR_FILE}" ]; then
|
||||
echo "发现现有压缩包 ${TAR_FILE},正在删除..."
|
||||
rm -f "${TAR_FILE}"
|
||||
fi
|
||||
|
||||
# 打包镜像为tar文件
|
||||
echo "开始将镜像 ${FULL_IMAGE} 打包为 ${TAR_FILE}..."
|
||||
if sudo docker save -o "${TAR_FILE}" "${FULL_IMAGE}"; then
|
||||
echo "镜像打包成功!生成文件:${TAR_FILE}"
|
||||
# 添加最高级别的可读写权限
|
||||
sudo chmod 777 "${TAR_FILE}"
|
||||
echo "已为 ${TAR_FILE} 设置最高权限(777)"
|
||||
else
|
||||
echo "错误:镜像打包失败" >&2
|
||||
exit 1
|
||||
fi
|
@@ -5,7 +5,6 @@ set -e # 当任何命令失败时立即退出脚本
|
||||
IMAGE_NAME="user-update-account-api"
|
||||
IMAGE_TAG="1.0.0"
|
||||
FULL_IMAGE="${IMAGE_NAME}:${IMAGE_TAG}"
|
||||
TAR_FILE="${IMAGE_NAME}-${IMAGE_TAG}.tar"
|
||||
|
||||
echo "开始删除现有镜像 ${FULL_IMAGE}..."
|
||||
if sudo docker rmi -f "${FULL_IMAGE}" >/dev/null 2>&1; then
|
||||
@@ -20,23 +19,4 @@ if sudo docker build -t "${FULL_IMAGE}" .; then
|
||||
else
|
||||
echo "错误:镜像构建失败" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "开始处理镜像压缩包..."
|
||||
# 如果存在同名压缩包则删除
|
||||
if [ -f "${TAR_FILE}" ]; then
|
||||
echo "发现现有压缩包 ${TAR_FILE},正在删除..."
|
||||
rm -f "${TAR_FILE}"
|
||||
fi
|
||||
|
||||
# 打包镜像为tar文件
|
||||
echo "开始将镜像 ${FULL_IMAGE} 打包为 ${TAR_FILE}..."
|
||||
if sudo docker save -o "${TAR_FILE}" "${FULL_IMAGE}"; then
|
||||
echo "镜像打包成功!生成文件:${TAR_FILE}"
|
||||
# 添加最高级别的可读写权限
|
||||
sudo chmod 777 "${TAR_FILE}"
|
||||
echo "已为 ${TAR_FILE} 设置最高权限(777)"
|
||||
else
|
||||
echo "错误:镜像打包失败" >&2
|
||||
exit 1
|
||||
fi
|
@@ -5,7 +5,6 @@ set -e # 当任何命令失败时立即退出脚本
|
||||
IMAGE_NAME="user-update-password-api"
|
||||
IMAGE_TAG="1.0.0"
|
||||
FULL_IMAGE="${IMAGE_NAME}:${IMAGE_TAG}"
|
||||
TAR_FILE="${IMAGE_NAME}-${IMAGE_TAG}.tar"
|
||||
|
||||
echo "开始删除现有镜像 ${FULL_IMAGE}..."
|
||||
if sudo docker rmi -f "${FULL_IMAGE}" >/dev/null 2>&1; then
|
||||
@@ -20,23 +19,4 @@ if sudo docker build -t "${FULL_IMAGE}" .; then
|
||||
else
|
||||
echo "错误:镜像构建失败" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "开始处理镜像压缩包..."
|
||||
# 如果存在同名压缩包则删除
|
||||
if [ -f "${TAR_FILE}" ]; then
|
||||
echo "发现现有压缩包 ${TAR_FILE},正在删除..."
|
||||
rm -f "${TAR_FILE}"
|
||||
fi
|
||||
|
||||
# 打包镜像为tar文件
|
||||
echo "开始将镜像 ${FULL_IMAGE} 打包为 ${TAR_FILE}..."
|
||||
if sudo docker save -o "${TAR_FILE}" "${FULL_IMAGE}"; then
|
||||
echo "镜像打包成功!生成文件:${TAR_FILE}"
|
||||
# 添加最高级别的可读写权限
|
||||
sudo chmod 777 "${TAR_FILE}"
|
||||
echo "已为 ${TAR_FILE} 设置最高权限(777)"
|
||||
else
|
||||
echo "错误:镜像打包失败" >&2
|
||||
exit 1
|
||||
fi
|
107
deploy/deploy.sh
107
deploy/deploy.sh
@@ -9,6 +9,7 @@ NC='\033[0m' # 重置颜色
|
||||
|
||||
COMPOSE_PROJECT_NAME="user_service"
|
||||
DOCKER_COMPOSE_FILE="./docker-compose.yaml"
|
||||
API_DIR="./api" # API服务所在目录
|
||||
|
||||
# 步骤1:停止指定名称的docker-compose编排
|
||||
echo -e "${YELLOW}===== 第一步:停止编排名称为 $COMPOSE_PROJECT_NAME 的服务 ====="${NC}
|
||||
@@ -26,89 +27,39 @@ else
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤2:进入images目录加载所有镜像
|
||||
echo -e "\n${YELLOW}===== 第二步:加载images目录下的所有镜像 ====="${NC}
|
||||
IMAGES_DIR="./images"
|
||||
if [ -d "$IMAGES_DIR" ]; then
|
||||
cd "$IMAGES_DIR" || {
|
||||
echo -e "${RED}错误:无法进入目录 $IMAGES_DIR${NC}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 遍历所有镜像文件(支持.tar和.tar.gz格式)
|
||||
image_files=$(find . -type f -name "*.tar" -o -name "*.tar.gz")
|
||||
if [ -z "$image_files" ]; then
|
||||
echo -e "${YELLOW}警告:$IMAGES_DIR 目录下未找到镜像文件${NC}"
|
||||
else
|
||||
for file in $image_files; do
|
||||
echo "处理镜像文件:$file"
|
||||
# 步骤2:处理所有API服务的release.sh
|
||||
echo -e "\n${YELLOW}===== 第二步:执行所有API服务的构建脚本 ====="${NC}
|
||||
if [ -d "$API_DIR" ]; then
|
||||
# 遍历API目录下的所有子文件夹
|
||||
for api_folder in "$API_DIR"/*/; do
|
||||
# 检查是否为目录
|
||||
if [ -d "$api_folder" ]; then
|
||||
# 提取文件夹名称(用于日志显示)
|
||||
folder_name=$(basename "$api_folder")
|
||||
echo -e "\n${YELLOW}处理服务: $folder_name${NC}"
|
||||
|
||||
# 临时加载镜像并获取输出(修复判断逻辑)
|
||||
temp_load_output=$(docker load -i "$file" 2>&1)
|
||||
# 检查临时加载是否成功(通过返回码判断,而非输出内容)
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e " ${RED}临时加载镜像 $file 失败:$temp_load_output${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 从输出中提取镜像ID(兼容不同格式的输出)
|
||||
temp_image_id=$(echo "$temp_load_output" | awk '/Loaded image ID: / {print $4}')
|
||||
# 如果未提取到ID,尝试从"Loaded image: 镜像名:标签"中获取标签
|
||||
if [ -z "$temp_image_id" ]; then
|
||||
image_tag=$(echo "$temp_load_output" | awk '/Loaded image: / {print $3}')
|
||||
if [ -n "$image_tag" ]; then
|
||||
temp_image_id=$(docker images --format '{{.ID}}' "$image_tag" | head -n 1)
|
||||
fi
|
||||
fi
|
||||
|
||||
# 再次检查是否获取到镜像ID
|
||||
if [ -z "$temp_image_id" ]; then
|
||||
echo -e " ${RED}无法获取镜像 $file 的ID,加载失败${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 获取镜像标签
|
||||
image_tags=$(docker image inspect --format '{{range .RepoTags}}{{.}} {{end}}' "$temp_image_id")
|
||||
if [ -z "$image_tags" ]; then
|
||||
echo -e " ${YELLOW}警告:镜像 $file 没有标签信息,直接删除临时镜像${NC}"
|
||||
docker rmi -f "$temp_image_id" >/dev/null 2>&1
|
||||
else
|
||||
# 先删除已存在的同名标签镜像
|
||||
for tag in $image_tags; do
|
||||
if docker images --format '{{.Repository}}:{{.Tag}}' | grep -q "^$tag$"; then
|
||||
echo " 发现已存在镜像 $tag,正在删除..."
|
||||
if docker rmi -f "$tag" >/dev/null 2>&1; then
|
||||
echo -e " ${GREEN}成功删除镜像 $tag${NC}"
|
||||
else
|
||||
echo -e " ${RED}删除镜像 $tag 失败!${NC}"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
# 检查release.sh是否存在
|
||||
release_script="${api_folder}/release.sh"
|
||||
if [ -f "$release_script" ]; then
|
||||
echo "给予 $release_script 执行权限..."
|
||||
chmod +x "$release_script"
|
||||
|
||||
# 删除临时加载的镜像
|
||||
docker rmi -f "$temp_image_id" >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
# 正式加载镜像
|
||||
echo " 正在加载镜像:$file"
|
||||
load_output=$(docker load -i "$file" 2>&1)
|
||||
if [ $? -eq 0 ]; then
|
||||
echo -e " ${GREEN}镜像 $file 加载成功:$load_output${NC}"
|
||||
echo "执行 $release_script ..."
|
||||
(cd "$api_folder" && ./release.sh) # 进入目录并执行脚本
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo -e "${GREEN}$folder_name 服务构建完成${NC}"
|
||||
else
|
||||
echo -e "${RED}$folder_name 服务构建失败!${NC}"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo -e " ${RED}镜像 $file 加载失败:$load_output${NC}"
|
||||
exit 1
|
||||
echo -e "${YELLOW}警告:$api_folder 中未找到 release.sh,跳过该目录${NC}"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# 返回根目录
|
||||
cd .. || {
|
||||
echo -e "${RED}错误:无法返回根目录${NC}"
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo -e "${RED}错误:未找到 $IMAGES_DIR 目录${NC}"
|
||||
echo -e "${RED}错误:未找到 $API_DIR 目录${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
Reference in New Issue
Block a user