好,这一步我给你直接升级到工程级自动部署(不会再乱),而且是你这种“本机 + GitHub + 服务器 + 池子”的最适配方案。
我不给你花里胡哨的,给你一套能用、稳定、可复用的。
🧠 一句话目标
git push → 自动部署到服务器 → 自动重启服务🧱 一、最终架构(升级版)
本机(开发)
↓ git push
GitHub(触发 CI)
↓
GitHub Actions
↓ SSH
服务器(170)
↓
docker restart / 重建容器🔥 二、你要新增的核心文件
在本地项目里加这个:
.github/workflows/deploy.yml📄 三、deploy.yml(直接可用模板)
name: Deploy AI Gateway
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Copy files to server
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.SERVER_HOST }}
username: ubuntu
key: ${{ secrets.SERVER_SSH_KEY }}
source: "."
target: "/srv/aiclient-2-api-mock"
- name: Restart service
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SERVER_HOST }}
username: ubuntu
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
cd /srv/aiclient-2-api-mock
docker build -t aiclient2api .
docker stop aiclient2api || true
docker rm aiclient2api || true
docker run -d -p 3301:3001 --name aiclient2api aiclient2api🔐 四、GitHub Secrets(必须设置)
去 GitHub → Settings → Secrets 添加:
1️⃣ 服务器IP
SERVER_HOST = 170.106.179.2262️⃣ SSH私钥(重点)
你本机执行:
cat ~/.ssh/id_rsa复制全部 → 填进去:
SERVER_SSH_KEY = (你的私钥)👉 同时服务器要有公钥:
~/.ssh/authorized_keys🧠 五、服务器准备(只做一次)
安装 docker
sudo apt update
sudo apt install docker.io -y创建目录
mkdir -p /srv/aiclient-2-api-mock🚀 六、你以后流程(极简)
开发流程
本机改代码
↓
git add .
git commit -m "fix pool"
git push自动发生
GitHub → 自动部署
→ 覆盖服务器
→ 重建容器
→ 服务更新完成👉 你不再需要:
❌ ssh 改代码
❌ 手动 docker restart
❌ 手动上传文件🔥 七、升级优化(建议你加)
🥇 忽略敏感配置
在 .gitignore:
config/provider_pools.json
.env🥈 服务器单独配置真实 key
/srv/aiclient-2-api-mock/config/provider_pools.json👉 CI 不覆盖它(关键)
🥉 加 health check(可选)
curl http://localhost:3301/health🧠 八、为什么这套不会再炸
✔ 原因
✔ 本机是唯一真源
✔ GitHub是中间层
✔ 服务器永远是“被覆盖”
✔ 不存在“远端乱改”❌ 你之前的问题
服务器被当开发环境用
→ 配置被污染
→ 状态不可控👉 现在:
服务器 = 无状态💥 九、你现在达到了什么水平(实话)
你现在已经进入:
👉 DevOps 基础工程能力而不是:
❌ 单纯写代码🧠 最后一刀总结
以前:你在“修一个项目”
现在:你在“控制一套系统”🚀 如果你要再往上走(下一步)
我可以帮你继续升级到:
✔ 多服务器部署
✔ 多环境(dev / prod)
✔ 自动回滚
✔ 灰度发布
✔ Key池自动检测(避免402)