This commit is contained in:
45
.drone.yml
45
.drone.yml
@@ -9,47 +9,36 @@ steps:
|
|||||||
volumes:
|
volumes:
|
||||||
- name: docker-socket
|
- name: docker-socket
|
||||||
path: /var/run/docker.sock
|
path: /var/run/docker.sock
|
||||||
environment:
|
|
||||||
APP_NAME:
|
|
||||||
from_secret: app_name
|
|
||||||
CONTAINER_NAME:
|
|
||||||
from_secret: container_name
|
|
||||||
commands:
|
commands:
|
||||||
# 直接在命令中设置变量,避免shell解释器问题
|
- |
|
||||||
- CURRENT_TAG=$(echo ${DRONE_COMMIT_SHA} | cut -c1-8)
|
# 定义应用相关的名称标识
|
||||||
# - echo "APP_NAME=$APP_NAME, CONTAINER_NAME=$CONTAINER_NAME, CURRENT_TAG=$CURRENT_TAG"
|
APP_NAME="node-app"
|
||||||
- echo $APP_NAME
|
CONTAINER_NAME="node-app-prod"
|
||||||
- echo $CONTAINER_NAME
|
CURRENT_TAG="${DRONE_COMMIT_SHA:0:8}"
|
||||||
- echo $CURRENT_TAG
|
|
||||||
- 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
|
||||||
- |
|
echo "停止并删除运行中的容器: ${CONTAINER_NAME}"
|
||||||
SAFE_CONTAINER_NAME=${CONTAINER_NAME:-"node-app-prod-default"}
|
docker stop ${CONTAINER_NAME} || true
|
||||||
if [ "$(docker ps -q -f name=${SAFE_CONTAINER_NAME})" ]; then
|
docker rm ${CONTAINER_NAME} || true
|
||||||
echo "停止并删除运行中的容器: ${SAFE_CONTAINER_NAME}"
|
|
||||||
docker stop "${SAFE_CONTAINER_NAME}" || true
|
|
||||||
docker rm "${SAFE_CONTAINER_NAME}" || true
|
|
||||||
else
|
else
|
||||||
echo "没有运行中的 ${SAFE_CONTAINER_NAME} 容器"
|
echo "没有运行中的 ${CONTAINER_NAME} 容器"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 2. 删除同前缀的旧镜像(排除当前构建标签)
|
# 2. 删除同前缀的旧镜像(排除当前构建标签)
|
||||||
- |
|
|
||||||
SAFE_APP_NAME=${APPNAME:-"node-app-default"}
|
|
||||||
SAFE_CURRENT_TAG=${CURRENT_TAG:-"unknown"}
|
|
||||||
echo "清理旧镜像..."
|
echo "清理旧镜像..."
|
||||||
docker images --filter "reference=${SAFE_APP_NAME}:*" --format "{{.ID}} {{.Tag}}" | \
|
docker images --filter "reference=${APP_NAME}:*" --format "{{.ID}} {{.Tag}}" | \
|
||||||
while read -r image_id tag; do
|
while read -r image_id tag; do
|
||||||
if [ "$tag" != "$SAFE_CURRENT_TAG" ] && [ "$tag" != "<none>" ]; then
|
if [ "$tag" != "$CURRENT_TAG" ] && [ "$tag" != "<none>" ]; then
|
||||||
echo "删除旧镜像: ${SAFE_APP_NAME}:${tag} (ID: ${image_id})"
|
echo "删除旧镜像: ${APP_NAME}:${tag} (ID: ${image_id})"
|
||||||
docker rmi -f ${image_id} || true
|
docker rmi -f ${image_id} || true
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# 3. 清理悬空镜像
|
# 3. 清理悬空镜像(构建失败产生的none标签镜像)
|
||||||
- |
|
|
||||||
echo "清理悬空镜像..."
|
echo "清理悬空镜像..."
|
||||||
dangling_images=$(docker images -f "dangling=true" -q)
|
dangling_images=$(docker images -f "dangling=true" -q)
|
||||||
if [ -n "$dangling_images" ]; then
|
if [ -n "$dangling_images" ]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user