#!/bin/bash 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 echo "镜像 ${FULL_IMAGE} 删除成功" else echo "镜像 ${FULL_IMAGE} 不存在,跳过删除步骤" fi echo "开始构建新镜像 ${FULL_IMAGE}..." if sudo docker build -t "${FULL_IMAGE}" .; then echo "镜像 ${FULL_IMAGE} 构建成功!" 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}" else echo "错误:镜像打包失败" >&2 exit 1 fi