“用脚本部署应用”可以按场景和技术栈分成几种常见做法。下面给你一个通用、可落地的思路,再给几个示例脚本,你可以直接改着用。
不管用什么技术,部署脚本一般做这几件事:
#!/bin/bash
APP_DIR=/opt/myapp
BACKUP_DIR=/opt/myapp_backup
PORT=8080
echo "==> 停止旧服务"
pkill -f myapp || true
echo "==> 备份旧版本"
rm -rf $BACKUP_DIR
cp -r $APP_DIR $BACKUP_DIR
echo "==> 更新代码"
cd $APP_DIR
git pull
echo "==> 安装依赖"
npm install # 或 pip install -r requirements.txt
echo "==> 启动服务"
nohup node index.js > app.log 2>&1 &
echo "==> 等待启动"
sleep 5
curl -f http://localhost:$PORT/health && echo "部署成功" || echo "部署失败"
✅ 优点:简单
❌ 缺点:不适合大规模、多机
docker build -t myapp:1.0 .
#!/bin/bash
docker stop myapp || true
docker rm myapp || true
docker run -d \
--name myapp \
-p 8080:8080 \
--restart always \
myapp:1.0
✅ 好处:环境一致、回滚快
✅ 适合 90% 场景
docker compose pull
docker compose up -d
docker-compose.yml 示例:
services:
app:
image: myapp:1.0
ports:
- "8080:8080"
restart: always
for host in 192.168.1.10 192.168.1.11; do
ssh user@$host <<'EOF'
cd /opt/myapp
git pull
docker compose up -d
EOF
done
常见组合:
示例(GitHub Actions):
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: |
ssh user@server <<'EOF'
cd /opt/myapp
git pull
docker compose up -d
EOF
| 场景 | 推荐方式 |
|---|---|
| 学习 / 单机 | Shell 脚本 |
| 小项目 | Docker |
| 多服务 | Docker Compose |
| 多机器 | Ansible / CI |
| 生产级 | K8s + CI/CD |
如果你愿意,可以告诉我:
我可以直接帮你写一份可用的部署脚本。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。