#!/bin/bash# ===============================================================================
# Author: ldj
# Date: 2025-07-08 15:37:11
# Description: 首先删除旧的容器和镜像,然后登录到 Harbor 并拉取最新的镜像进行部署
# ===============================================================================# 显示每条命令执行情况,便于调试
set -x harbor_addr=$1
harbor_repo=$2
project_name=$3
version=$4
port=$5image_name=${harbor_addr}/${harbor_repo}/${project_name}:${version}echo "镜像名称:${image_name}"# 删除旧容器
container_id=$(docker ps -aq --filter name=${project_name})
if [ -n "${container_id}" ]; thendocker stop ${container_id}docker rm ${container_id}echo "已停止并删除容器: ${container_id}"
fi# 删除本地旧镜像
old_version=$(docker images | grep ${project_name} | awk '{print $2}')if [ "${old_version}" == "${version}" ]; thendocker rmi -f ${old_images}echo "已删除本地旧镜像"
fi# 登录Harbor
docker login -u admin -p 123456 ${harbor_addr} || { echo '登录Harbor失败'; exit 1; }# 拉取新镜像
echo "开始拉取新镜像"
docker pull ${image_name} || { echo "拉取新镜像失败"; exit 1; }# 运行新容器
docker run -d -p ${port}:${port} --name ${project_name} ${image_name}echo ${project_name} '成功运行!'# 删除悬空镜像
docker image prune -f