#!/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
?