1
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
编码猿
2025-09-09 10:12:18 +08:00
parent fecd09793d
commit 38f5407b2f

View File

@@ -12,28 +12,27 @@ steps:
commands: commands:
- | - |
# 定义应用相关的名称标识 # 定义应用相关的名称标识
APP_NAME="node-app" # APP_NAME="node-app"
CONTAINER_NAME="node-app-prod" # CONTAINER_NAME="node-app-prod"
CURRENT_TAG="${DRONE_COMMIT_SHA:0:8}" CURRENT_TAG="${DRONE_COMMIT_SHA:0:8}"
echo "开始清理残留资源..." echo "开始清理残留资源..."
echo "调试信息: APP_NAME=${APP_NAME}, CONTAINER_NAME=${CONTAINER_NAME}, CURRENT_TAG=${CURRENT_TAG}"
# 1. 停止并删除正在运行的旧容器 # 1. 停止并删除正在运行的旧容器
if [ "$(docker ps -q -f name=${CONTAINER_NAME})" ]; then if [ "$(docker ps -q -f name=node-app-prod)" ]; then
echo "停止并删除运行中的容器: ${CONTAINER_NAME}" echo "停止并删除运行中的容器: node-app-prod"
docker stop ${CONTAINER_NAME} || true docker stop node-app-prod || true
docker rm ${CONTAINER_NAME} || true docker rm node-app-prod || true
else else
echo "没有运行中的 ${CONTAINER_NAME} 容器" echo "没有运行中的 node-app-prod 容器"
fi fi
# 2. 删除同前缀的旧镜像(排除当前构建标签) # 2. 删除同前缀的旧镜像(排除当前构建标签)
echo "清理旧镜像..." echo "清理旧镜像..."
docker images --filter "reference=${APP_NAME}:*" --format "{{.ID}} {{.Tag}}" | \ docker images --filter "reference=node-app:*" --format "{{.ID}} {{.Tag}}" | \
while read -r image_id tag; do while read -r image_id tag; do
if [ "$tag" != "$CURRENT_TAG" ] && [ "$tag" != "<none>" ]; then if [ "$tag" != "$CURRENT_TAG" ] && [ "$tag" != "<none>" ]; then
echo "删除旧镜像: ${APP_NAME}:${tag} (ID: ${image_id})" echo "删除旧镜像: node-app:${tag} (ID: ${image_id})"
docker rmi -f ${image_id} || true docker rmi -f ${image_id} || true
fi fi
done done