All checks were successful
continuous-integration/drone/push Build is passing
- 使用 Dockerfile.deploy 而非默认 Dockerfile - 直接使用 docker run 而不是 docker-compose(避免依赖问题) - 强制删除旧容器后创建新容器(确保使用新镜像) - 修复镜像构建后容器没有更新的问题 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
70 lines
1.7 KiB
YAML
70 lines
1.7 KiB
YAML
kind: pipeline
|
||
type: docker
|
||
name: 武术系统前端自动部署
|
||
|
||
# 只在 main 分支触发
|
||
trigger:
|
||
branch:
|
||
- main
|
||
event:
|
||
- push
|
||
|
||
steps:
|
||
# 步骤1:安装依赖
|
||
- name: 安装依赖
|
||
image: node:18-alpine
|
||
commands:
|
||
- echo "开始安装 npm 依赖..."
|
||
- npm install
|
||
- echo "✅ 依赖安装完成"
|
||
|
||
# 步骤2:构建生产版本
|
||
- name: 构建前端项目
|
||
image: node:18-alpine
|
||
commands:
|
||
- echo "开始构建前端项目..."
|
||
- npm run build
|
||
- ls -lh dist/
|
||
- echo "✅ 前端构建完成"
|
||
|
||
# 步骤3:传输文件到服务器
|
||
- name: 传输构建产物
|
||
image: appleboy/drone-scp
|
||
settings:
|
||
host: 154.30.6.21
|
||
username: root
|
||
key:
|
||
from_secret: ssh_key
|
||
port: 22
|
||
target: /app/martial/frontend-build
|
||
source:
|
||
- dist/*
|
||
- Dockerfile
|
||
- nginx.conf
|
||
strip_components: 0
|
||
|
||
# 步骤4:在服务器上构建镜像并部署
|
||
- name: 部署到生产环境
|
||
image: appleboy/drone-ssh
|
||
settings:
|
||
host: 154.30.6.21
|
||
username: root
|
||
key:
|
||
from_secret: ssh_key
|
||
port: 22
|
||
script:
|
||
- cd /app/martial/frontend-build
|
||
- docker build -f Dockerfile.deploy -t martial/frontend:latest .
|
||
- docker rm -f martial-frontend || true
|
||
- docker run -d --name martial-frontend --restart always -p 5173:80 --network martial_martial-network -e TZ=Asia/Shanghai martial/frontend:latest
|
||
- docker ps | grep martial-frontend
|
||
- echo "✅ 前端部署完成"
|
||
|
||
# 步骤5:健康检查
|
||
- name: 健康检查
|
||
image: curlimages/curl:latest
|
||
commands:
|
||
- sleep 5
|
||
- curl -f http://154.30.6.21/ || exit 1
|
||
- echo "✅ 前端访问正常"
|