怎么把 AI 工作流从本地部署迁移到云端?

juming
juming 初级会员超兽战士
发布于 2026-10-08 19:11 ·1 浏览 ·0 回复

照着做完,你能把本地 Docker Compose 跑起来的 AI 工作流(模型服务 + 编排服务 + 向量库)完整搬到云服务器上,并且用域名和 HTTPS 对外提供服务。

下面这套流程基于一个具体场景:本地一台带 RTX 4090 的机器,用 Docker Compose 跑三个容器——ollama(11434 端口)、自己的 FastAPI 编排服务(8000 端口)、n8n(5678 端口),向量数据存在 pgvector 容器里。云端目标是一台阿里云 ECS(GPU 机型选 ecs.gn7i-c8g1.2xlarge,A10 24G;如果改用托管模型 API,选 4 核 8G 的通用型就够)。

第一步:盘点本地依赖,生成迁移清单

这一步要把「本地到底跑了什么」变成一张纸面清单,后面每一步都靠它对照。

docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Ports}}"
docker compose config > local-compose-resolved.yaml
docker volume ls

把三样东西记下来:镜像名和 tag(别用 latest,改成 myapp:1.0 这种确定版本)、每个容器挂载的宿主机目录、以及 .env 里所有环境变量。local-compose-resolved.yaml 是 Compose 展开变量后的完整配置,迁移时以它为准,不要以你手写的 docker-compose.yml 为准。

注意:如果你本地是 M 系列 Mac 或 ARM 服务器,镜像架构是 arm64,直接搬到 x86 的 ECS 上会报 exec format error。迁移前用 docker build --platform linux/amd64 -t myapp:1.0 . 重新构建一次。

第二步:决定模型层怎么上云

这一步决定你后面买什么机器,是整件事里最贵的一个选择。

三条路:一是原样搬 ollama 到 GPU 云服务器,改动最小但按月付 GPU 钱;二是把 ollama 换成托管 API,比如阿里云百炼的 qwen-plus 或 DeepSeek 官方 API,编排服务里只改 OLLAMA_HOST 这类配置项,机器成本立刻降到十分之一;三是混合,小模型本地跑、大模型走 API。对绝大多数工作流,第二条性价比最高,除非你有数据不能出内网的要求。

如果走 API 路线,把代码里所有硬编码的 http://localhost:11434/api/generate 换成读环境变量 LLM_BASE_URL,云端直接填 https://dashscope.aliyuncs.com/compatible-mode/v1。

第三步:买服务器并放行端口

这一步拿到一台能 SSH 登录、端口开好的云主机。

在阿里云控制台:实例与镜像 → 实例 → 创建实例 → 地域选离你用户近的(华东1杭州),镜像选 Ubuntu 22.04 64位,勾选「分配公网 IPv4」。创建完成后进「安全组」→「配置规则」→「入方向」→「手动添加」,放行 22(SSH)、80(HTTP)、443(HTTPS)三个端口。

然后登录装 Docker:

ssh root@你的公网IP
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
docker compose version

注意:绝对不要把 11434(ollama)和 5432(postgres)加进安全组。这两个端口暴露到公网,几小时内就会被人扫到并跑满你的额度。容器之间用 Compose 的服务名互访,不需要对外开端口。

第四步:搬代码和镜像

这一步把本地代码和镜像送上云,做完后云端能 docker compose up 起得来。

代码走 Git,别用 scp 传整个目录:

git clone https://你的仓库地址.git /opt/ai-workflow
cd /opt/ai-workflow
cp .env.example .env && vim .env

镜像如果构建慢,先传到阿里云容器镜像服务 ACR:本地 docker tag myapp:1.0 registry.cn-hangzhou.aliyuncs.com/你的命名空间/myapp:1.0,docker push,云端 docker pull。镜像不大的话直接 docker save -o myapp.tar myapp:1.0,scp myapp.tar root@IP:/root/,云端 docker load -i myapp.tar。

模型权重和向量库快照就别 scp 了,几百 GB 传到天亮。装 ossutil 传到对象存储 OSS:

./ossutil64 cp -r ./models oss://你的bucket/models/ --update

云端再 ossutil64 cp -r oss://你的bucket/models/ ./models 拉回来。

第五步:起服务并验证

这一步让容器在云端跑起来,并逐个确认接口通。

cd /opt/ai-workflow
docker compose up -d
docker compose ps
docker compose logs -f workflow-api

三个容器都显示 Up 后,在服务器上本地验证:curl http://localhost:8000/health 返回 200 再往下走。然后从你自己的电脑 curl http://公网IP:8000/health,通了说明端口链路没问题。

GPU 机型要额外装 NVIDIA 容器工具链,否则容器里看不到显卡:

apt install -y nvidia-container-toolkit
systemctl restart docker
docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi

能看到 A10 的型号和显存,才说明 GPU 直通成功。

第六步:配域名和 HTTPS

这一步把 http://IP:8000 换成 https://ai.你的域名.com,让人能正常用。

在域名解析里加一条 A 记录,主机记录填 ai,记录值填公网 IP。然后在服务器上装 Nginx 和 certbot:

apt install -y nginx certbot python3-certbot-nginx
vim /etc/nginx/sites-available/ai

配置内容:

server {
    listen 80;
    server_name ai.你的域名.com;
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_read_timeout 300s;
    }
}

启用后申请证书:

ln -s /etc/nginx/sites-available/ai /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d ai.你的域名.com

certbot 会自动改好 443 段并配置自动续期。

注意:proxy_read_timeout 默认 60 秒,大模型生成超过一分钟会被 Nginx 掐断,返回 504。这一行必须显式调大。

第七步:加上重启和备份

这一步让服务在服务器重启或容器崩溃后自动恢复,并保证数据不丢。

Compose 里每个服务都加 restart: unless-stopped,再配一个开机自启的 systemd 单元或在 crontab 里加 @reboot cd /opt/ai-workflow && docker compose up -d。

数据库备份用 crontab 每天凌晨跑一次:

0 3 * * * docker exec pgvector pg_dump -U postgres vectors > /backup/vectors_$(date +\%F).sql

再把 /backup 目录同步到 OSS,保留最近 7 天。

小结

  • 迁移前先 docker compose config 导出展开后的配置,以它为准而不是手写的 yml。
  • ARM 本地构建的镜像搬到 x86 云主机会报 exec format error,要用 --platform linux/amd64 重建。
  • 模型层优先考虑换成托管 API,成本比租 GPU 机器低一个量级,除非有数据合规要求。
  • 安全组只开 22/80/443,ollama 和数据库端口一律不对外。
  • 大文件走对象存储 OSS,别用 scp 硬传。
  • Nginx 必须调大 proxy_read_timeout,否则长文本生成会被 504 打断。
  • 收尾一定要做 restart: unless-stopped 和每日数据库备份。
版权声明:本文来自 GJ站长论坛《怎么把 AI 工作流从本地部署迁移到云端?》
原文链接:https://www.gj0.com/thread-1118.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~