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

This commit is contained in:
编码猿
2025-09-09 10:32:10 +08:00
parent aac7cbf23e
commit c1f00be222

View File

@@ -1,6 +1,6 @@
kind: pipeline
type: docker
name: nodejs-pipeline-with-cleanup
name: nodejs-host-network-pipeline
steps:
# 步骤0清理残留容器和镜像优先执行
@@ -16,11 +16,13 @@ steps:
CONTAINER_NAME="node-app-prod"
CURRENT_TAG="${DRONE_COMMIT_SHA:0:8}"
echo "开始清理残留资源..."
echo "-----------------------"
echo "1 开始清理残留资源..."
# 1. 停止并删除正在运行的旧容器
# 停止并删除正在运行的旧容器
if [ "$(docker ps -q -f name=$CONTAINER_NAME)" ]; then
echo "停止并删除运行中的容器: $CONTAINER_NAME"
echo "1.1: 停止并删除运行中的容器: $CONTAINER_NAME"
docker stop $CONTAINER_NAME || true
docker rm $CONTAINER_NAME || true
else
@@ -28,6 +30,7 @@ steps:
fi
# 2. 删除同前缀的旧镜像(排除当前构建标签)
echo "-----------------------"
echo "清理旧镜像..."
docker images --filter "reference=$APP_NAME:*" --format "{{.ID}} {{.Tag}}" | \
while read -r image_id tag; do
@@ -38,6 +41,7 @@ steps:
done
# 3. 清理悬空镜像构建失败产生的none标签镜像
echo "-----------------------"
echo "清理悬空镜像..."
dangling_images=$(docker images -f "dangling=true" -q)
if [ -n "$dangling_images" ]; then
@@ -46,41 +50,30 @@ steps:
echo "没有悬空镜像需要清理"
fi
# 步骤1安装Node.js依赖
# 第一步:准备环境并安装依赖
- name: install-dependencies
image: node:18-bullseye-slim
image: node:18-bullseye
commands:
- apt-get update && apt-get install -y iproute2
- ip -V
- npm install
volumes:
- name: node_modules
path: /app/node_modules
# 步骤2构建Docker镜像
- name: build-app-image
# 第三构建Docker镜像
- name: build-image
image: docker:20.10
volumes:
- name: docker-socket
path: /var/run/docker.sock
- name: node_modules
path: /drone/src/node_modules
path: /app/node_modules
commands:
- docker build -t node-app:${DRONE_COMMIT_SHA:0:8} -f Dockerfile .
# 步骤3测试容器运行
- name: test-container
image: docker:20.10
volumes:
- name: docker-socket
path: /var/run/docker.sock
commands:
- |
docker run --rm \
--network host \
node-app:${DRONE_COMMIT_SHA:0:8} \
sh -c "ip -V && npm start -- --version"
# 步骤4部署容器
- name: deploy
# 第四步使用host网络运行应用
- name: run-with-host-network
image: docker:20.10
volumes:
- name: docker-socket
@@ -110,3 +103,4 @@ trigger:
event:
- push
- pull_request