diff --git a/build.sh b/build.sh index f210068..dbd146c 100755 --- a/build.sh +++ b/build.sh @@ -24,20 +24,22 @@ # # 选项(options): # build - 编译代码(serv和web需要) -# save - 保存镜像到tar文件(配合build自动保存构建版本) +# save - 保存镜像到tar文件(默认使用带时间戳的版本名) +# save=latest - 保存为latest版本 # save=YYYYMMDD_HHMMSS - 保存指定版本的镜像 # # 保存规则: -# - build save → 自动保存刚构建的版本(推荐) -# - save=20251124_xxx → 保存指定版本(必须已存在) -# - 只使用save → 报错,必须指定版本 +# - save → 保存为当前时间戳版本(默认,推荐)✅ +# - build save → 编译+构建+保存为构建时间戳版本 ✅ +# - save=latest → 保存为latest版本 +# - save=20251124_xxx → 保存为指定版本 # # 示例: # ./build.sh base-all # 构建所有基础镜像 -# ./build.sh serv build save # 编译+构建+保存(自动使用构建版本)✅ -# ./build.sh all build save # 完整构建流程 -# ./build.sh serv save=20251124_143025 # 保存已存在的指定版本 -# ./build.sh serv save # ❌ 错误:必须指定版本 +# ./build.sh serv build save # 编译+构建+保存(使用构建时间戳)✅ +# ./build.sh all save # 保存当前时间戳版本(默认)✅ +# ./build.sh serv save=latest # 保存为latest版本 +# ./build.sh serv save=20251124_143025 # 保存为指定版本 ############################################## set -e # 遇到错误立即退出 @@ -104,7 +106,8 @@ done # 确定保存版本 if [ "${DO_SAVE}" = true ]; then if [ -z "${SAVE_VERSION}" ]; then - SAVE_VERSION="latest" + # 默认使用带时间戳的版本,除非明确指定 save=latest + SAVE_VERSION="${IMAGE_VERSION}" fi fi @@ -116,7 +119,13 @@ log_info "构建版本: ${IMAGE_VERSION}" log_info "编译代码: ${DO_BUILD}" log_info "保存镜像: ${DO_SAVE}" if [ "${DO_SAVE}" = true ]; then - log_info "保存版本: ${SAVE_VERSION}" + if [ "${SAVE_VERSION}" = "latest" ]; then + log_info "保存版本: ${SAVE_VERSION} (明确指定)" + elif [ "${DO_BUILD}" = false ]; then + log_info "保存版本: ${SAVE_VERSION} (默认带时间戳)" + else + log_info "保存版本: ${SAVE_VERSION} (构建版本)" + fi fi log_info "项目路径: ${PROJECT_ROOT}" echo "==========================================" diff --git a/doc/部署.md b/doc/部署.md index e9570a2..80e39d0 100644 --- a/doc/部署.md +++ b/doc/部署.md @@ -26,8 +26,26 @@ #### 镜像加载 ```bash -# 递归查找指定目录下的所有镜像文件并加载 -find .docker/schoolNews/images -type f \( -name "*.tar" -o -name "*.tar.gz" -o -name "*.tgz" \) -exec docker load -i {} \; +# 递归查找指定目录下的所有镜像文件并加载 schoolNews修改镜像增加标签latest用于docker compose启动 + +find .docker/schoolNews/images -type f \( -name "*.tar" -o -name "*.tar.gz" -o -name "*.tgz" \) -exec sh -c ' + docker load -i "$1" + # 获取刚导入的镜像名称和标签 + IMAGE_INFO=$(docker images --format "{{.Repository}}:{{.Tag}}" | tail -n1) + if [ -n "$IMAGE_INFO" ]; then + # 分离仓库名和标签 + REPO=$(echo "$IMAGE_INFO" | cut -d: -f1) + TAG=$(echo "$IMAGE_INFO" | cut -d: -f2) + # 只有当标签不是 latest 时才添加新标签 + if [ "$TAG" != "latest" ]; then + docker tag "$IMAGE_INFO" "$REPO:latest" + echo "Tagged $IMAGE_INFO as $REPO:latest" + fi + fi +' sh {} \; + +# 单独镜像加标签 +docker tag school-news-xxx:yyyyMMdd_HHmmss school-news-xxx:latest ``` #### 服务启动