This commit is contained in:
gxl 2026-06-02 17:52:42 +08:00
parent fb4c2a012f
commit 6f5bb86707
2 changed files with 55 additions and 0 deletions

View File

@ -29,6 +29,24 @@ steps:
mirror: https://docker.m.daocloud.io
# 很多时候 plugins/docker 内部默认会处理 context不需要你手动挂载 docker.sock
# 但需要确保服务器配置了 WOODPECKER_PLUGINS_PRIVILEGED=plugins/docker
when:
event: push
branch: master
- name: 目标机器部署
image: appleboy/drone-ssh:latest
settings:
host:
from_secret: 136_ssh_host
username:
from_secret: 136_ssh_user
key:
from_secret: 136_ssh_key
port: 22
command_timeout: 10m
# 👇 核心黑魔法:利用 SSH 远程执行本地的脚本文件
script:
- bash -s < ./deploy.sh
when:
event: push
branch: master

37
deploy.sh Normal file
View File

@ -0,0 +1,37 @@
#!/bin/bash
# deploy.sh
set -e
REGISTRY="registry.cn-zhangjiakou.aliyuncs.com"
IMAGE_NAME="${REGISTRY}/abhors/demo:latest"
CONTAINER_NAME="demo-app"
echo "=========================================="
echo " 🚀 开始远程部署: $(date '+%Y-%m-%d %H:%M:%S')"
echo "=========================================="
# 1. 拉取最新镜像 (前提:你已经在服务器上手动执行过一次 docker login 保持登录状态)
echo "👉 正在拉取最新镜像..."
docker pull $IMAGE_NAME
# 2. 清理旧容器
echo "👉 正在清理旧容器..."
docker stop $CONTAINER_NAME 2>/dev/null || true
docker rm $CONTAINER_NAME 2>/dev/null || true
# 3. 启动新容器(带内存限制)
echo "👉 正在启动新容器..."
docker run -d \
--name $CONTAINER_NAME \
-p 8080:8080 \
--memory="1.2g" \
--restart always \
$IMAGE_NAME
# 4. 清理残留的旧镜像
echo "👉 清理历史构建残留..."
docker image prune -f
echo "=========================================="
echo " 🎉 部署成功!"
echo "=========================================="