#!/bin/bash # 设置Docker镜像的仓库名和标签前缀 REPO_NAME="zhiyuanv3" TAG_PREFIX="build_" # 获取当前时间戳作为标签后缀 TIMESTAMP=$(date +%Y%m%d%H%M%S) TAG="${REPO_NAME}:${TAG_PREFIX}${TIMESTAMP}" CONTAINER_NAME="${REPO_NAME}_container_${TIMESTAMP}" # 尝试构建新的Docker镜像 docker build -t "${TAG}" . && { # 如果构建成功,则停止并删除具有相同前缀的旧容器 echo "Stopping and removing old containers..." docker ps -aqf "name=${REPO_NAME}_container_*" | xargs docker stop docker ps -aqf "name=${REPO_NAME}_container_*" | xargs docker rm # 删除具有相同前缀的旧镜像(排除最新的) echo "Removing old images..." docker images --format "{{.Repository}}:{{.Tag}}" | grep "${REPO_NAME}:${TAG_PREFIX}" | grep -v "${TAG}" | xargs docker rmi # 显示构建完成的镜像信息 echo "New image built successfully: ${TAG}" docker images | grep "${TAG}" # 启动新的容器(这里只是示例参数,你可能需要根据你的应用进行调整) echo "Starting new container ${CONTAINER_NAME}..." docker run \ -p 5006:5006 \ --restart unless-stopped \ --name "${CONTAINER_NAME}" \ -d "${TAG}" # 显示正在运行的容器信息 echo "Container started successfully: ${CONTAINER_NAME}" docker ps | grep "${CONTAINER_NAME}" } || { # 如果构建失败,则打印错误信息 echo "Failed to build the Docker image." }