把 AI 工具稳定跑在服务器上:一套 Docker 生产部署实战笔记
AI工具 Docker部署教程|生产环境实测
在过去一年里,越来越多的团队开始把 AI 工具引入到日常研发、运维、客服、数据分析和内容生产流程中。相比传统软件,AI 工具往往依赖更复杂的运行环境,例如 Python、Node.js、CUDA、模型文件、向量数据库、Redis、PostgreSQL、对象存储等。如果直接在服务器上手动安装,不仅容易出现依赖冲突,也很难在测试环境、预发布环境和生产环境之间保持一致。
因此,使用 Docker 部署 AI 工具,已经成为目前比较推荐的生产实践。本文将以“生产环境实测”的角度,系统讲解 AI 工具的 Docker 部署流程,包括服务器准备、Docker 安装、镜像构建、容器编排、数据持久化、环境变量配置、反向代理、HTTPS、日志、监控、安全加固以及常见问题排查。
本文适合以下读者:
- 想把开源 AI 工具部署到自己服务器上的开发者;
- 需要在公司内网部署 AI 助手、知识库、Agent 工具的技术人员;
- 正在评估 Docker 生产环境部署方案的运维工程师;
- 希望减少环境配置问题、提升部署稳定性的团队。
一、为什么推荐使用 Docker 部署 AI 工具?
AI 工具通常不是一个单独的程序,而是一整套服务组合。例如,一个常见的 AI 知识库系统可能包含:
- Web 前端服务;
- 后端 API 服务;
- 大模型调用服务;
- Embedding 向量化服务;
- 向量数据库,例如 Milvus、Qdrant、Weaviate;
- 关系型数据库,例如 PostgreSQL、MySQL;
- 缓存服务,例如 Redis;
- 文件存储服务,例如 MinIO;
- 任务队列服务,例如 Celery、RabbitMQ。
如果这些组件全部手动安装,环境维护成本会非常高。Docker 的优势主要体现在以下几个方面。
1. 环境一致性更好
Docker 可以把应用程序、运行依赖、系统库和启动命令全部打包进镜像。无论是在开发机、测试服务器还是生产服务器,只要镜像一致,运行结果就基本一致。
这对于 AI 工具尤其重要。因为很多 AI 工具依赖特定版本的 Python、PyTorch、Transformers、CUDA 或 Node.js,一旦版本不一致,就可能出现各种奇怪问题。
2. 部署速度更快
传统部署可能需要几十分钟甚至数小时配置环境,而 Docker 部署通常只需要:
docker compose up -d
或者:
docker run -d ...
如果镜像已经构建完成,服务可以在几分钟内启动。
3. 方便扩展和迁移
Docker 容器可以快速迁移到另一台服务器。只要保证配置文件、数据目录和镜像一致,就可以较容易地完成迁移。
在生产环境中,如果后期需要扩容,例如单独增加一个向量数据库节点、增加一个后端 API 实例,也可以基于 Docker Compose 或 Kubernetes 进一步演进。
4. 故障隔离能力更强
不同服务运行在不同容器中,一个服务异常不会直接污染宿主机环境。即使容器内部依赖出现问题,也可以通过重启容器、回滚镜像、重新构建等方式快速恢复。
二、生产环境部署前的服务器准备
在真正部署 AI 工具之前,需要先准备好服务器环境。这里以 Ubuntu 22.04 LTS 为例,其他 Linux 发行版也可以参考。
1. 服务器配置建议
不同 AI 工具对服务器配置要求不同。如果只是部署调用外部大模型 API 的 AI 工具,例如 OpenAI、Claude、通义千问、智谱、DeepSeek API 等,一般不需要本地 GPU。
推荐最低配置:
| 场景 | CPU | 内存 | 磁盘 | GPU |
|---|---|---|---|---|
| 轻量 AI 工具 | 2 核 | 4 GB | 40 GB SSD | 不需要 |
| 知识库系统 | 4 核 | 8 GB | 100 GB SSD | 不需要 |
| 多用户生产环境 | 8 核 | 16 GB | 200 GB SSD | 可选 |
| 本地模型推理 | 8 核以上 | 32 GB 以上 | 500 GB SSD | 建议 NVIDIA GPU |
如果要本地部署大模型,例如 Qwen、Llama、DeepSeek-R1-Distill、ChatGLM 等,还需要根据模型大小配置显存。比如 7B 量化模型通常需要 6GB 到 12GB 显存,14B 以上模型则需要更高规格 GPU。
2. 更新系统软件包
登录服务器后,先更新软件包:
sudo apt update
sudo apt upgrade -y
安装常用工具:
sudo apt install -y curl wget git vim htop net-tools unzip ca-certificates gnupg lsb-release
3. 创建专用部署目录
建议不要把 AI 工具部署在系统根目录下,可以创建一个统一目录,例如:
sudo mkdir -p /opt/ai-tools
sudo chown -R $USER:$USER /opt/ai-tools
cd /opt/ai-tools
后续所有项目都可以放在这个目录下,方便备份和迁移。
三、安装 Docker 和 Docker Compose
1. 卸载旧版本 Docker
如果服务器之前安装过旧版本 Docker,可以先卸载:
sudo apt remove -y docker docker-engine docker.io containerd runc
2. 安装 Docker 官方源
执行以下命令添加 Docker 官方 GPG key:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
添加 Docker 软件源:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
更新软件包索引:
sudo apt update
3. 安装 Docker Engine
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
验证安装结果:
docker --version
docker compose version
运行测试容器:
sudo docker run hello-world
如果输出 hello-world 的说明信息,表示 Docker 安装成功。
4. 配置当前用户免 sudo 使用 Docker
生产环境中可以根据安全要求决定是否配置。如果是个人服务器,通常会把当前用户加入 docker 组:
sudo usermod -aG docker $USER
然后重新登录服务器,验证:
docker ps
如果不再提示权限错误,即配置成功。
四、AI 工具 Docker 部署的典型架构
生产环境中,不建议只启动一个孤立容器。更推荐使用 Docker Compose 管理多服务架构。一个典型 AI 工具部署架构如下:
用户浏览器
|
| HTTPS
v
Nginx / Caddy 反向代理
|
| HTTP
v
AI Web/API 服务
|
|---------------- PostgreSQL
|---------------- Redis
|---------------- Vector DB
|---------------- MinIO
|---------------- LLM API 或本地推理服务
其中:
- Nginx 或 Caddy 负责域名访问、HTTPS 证书、反向代理;
- AI Web/API 服务负责核心业务逻辑;
- PostgreSQL 保存用户、配置、会话、知识库元数据;
- Redis 用于缓存、任务队列或会话管理;
- 向量数据库保存文档 embedding;
- MinIO 用于存储上传文件;
- 本地推理服务或第三方大模型 API 负责模型能力。
如果你的 AI 工具只需要数据库和 Redis,可以简化部署;如果涉及知识库和文件解析,则建议保留向量数据库和对象存储。
五、准备 Docker Compose 项目结构
假设我们要部署一个通用 AI 工具项目,可以采用如下目录结构:
/opt/ai-tools/my-ai-app
├── docker-compose.yml
├── .env
├── nginx
│ └── default.conf
├── data
│ ├── postgres
│ ├── redis
│ ├── minio
│ └── vector
├── logs
└── backup
创建目录:
cd /opt/ai-tools
mkdir -p my-ai-app/{nginx,data/postgres,data/redis,data/minio,data/vector,logs,backup}
cd my-ai-app
这个目录结构的优点是清晰、易维护:
docker-compose.yml负责服务编排;.env保存环境变量;data保存持久化数据;logs保存日志;backup保存备份文件;nginx保存反向代理配置。
六、编写生产环境 docker-compose.yml
下面是一个较完整的示例,适合大多数 AI 工具改造使用。实际项目中,需要根据镜像名称、端口、环境变量进行调整。
services:
app:
image: your-registry/your-ai-app:latest
container_name: ai_app
restart: always
env_file:
- .env
depends_on:
- postgres
- redis
- qdrant
- minio
volumes:
- ./logs/app:/app/logs
- ./data/uploads:/app/uploads
networks:
- ai_net
expose:
- "3000"
postgres:
image: postgres:16
container_name: ai_postgres
restart: always
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- ./data/postgres:/var/lib/postgresql/data
networks:
- ai_net
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:7
container_name: ai_redis
restart: always
command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD}
volumes:
- ./data/redis:/data
networks:
- ai_net
qdrant:
image: qdrant/qdrant:latest
container_name: ai_qdrant
restart: always
volumes:
- ./data/vector:/qdrant/storage
networks:
- ai_net
expose:
- "6333"
minio:
image: minio/minio:latest
container_name: ai_minio
restart: always
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
volumes:
- ./data/minio:/data
networks:
- ai_net
expose:
- "9000"
- "9001"
nginx:
image: nginx:1.25
container_name: ai_nginx
restart: always
depends_on:
- app
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./logs/nginx:/var/log/nginx
- ./certs:/etc/nginx/certs
networks:
- ai_net
networks:
ai_net:
driver: bridge
这个配置中,所有业务服务都放在 ai_net 网络内,只有 Nginx 对外暴露 80 和 443 端口。数据库、Redis、向量库和 MinIO 不直接暴露到公网,这是一种比较安全的生产环境做法。
七、配置环境变量 .env
在项目根目录创建 .env 文件:
vim .env
示例内容如下:
APP_ENV=production
APP_PORT=3000
APP_SECRET=please_change_this_secret
POSTGRES_DB=aiapp
POSTGRES_USER=aiuser
POSTGRES_PASSWORD=please_change_postgres_password
REDIS_PASSWORD=please_change_redis_password
QDRANT_URL=http://qdrant:6333
MINIO_ENDPOINT=http://minio:9000
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=please_change_minio_password
MINIO_BUCKET=ai-files
LLM_PROVIDER=openai
OPENAI_API_KEY=sk-your-api-key
OPENAI_BASE_URL=https://api.openai.com/v1
MODEL_NAME=gpt-4o-mini
EMBEDDING_MODEL=text-embedding-3-small
生产环境中,.env 文件非常重要,建议注意以下几点:
- 不要把
.env提交到公开 Git 仓库; - 密码必须使用强密码;
- API Key 要定期轮换;
- 如果多人协作,应通过密钥管理系统分发;
- 修改
.env后通常需要重启容器才能生效。
设置文件权限:
chmod 600 .env
八、配置 Nginx 反向代理
假设 AI 工具内部服务监听 3000 端口,对外域名为 ai.example.com,可以编写如下 Nginx 配置:
server {
listen 80;
server_name ai.example.com;
client_max_body_size 100M;
location / {
proxy_pass http://app:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Real-IP $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}
保存到:
nginx/default.conf
这里有几个关键点:
client_max_body_size 100M用于支持上传较大的文档;proxy_read_timeout 300s避免 AI 生成内容时间较长时连接被断开;Upgrade和Connection用于支持 WebSocket;proxy_pass http://app:3000中的app是 Docker Compose 服务名,不是公网域名。
九、启动服务并检查状态
在项目目录下执行:
docker compose up -d
查看容器状态:
docker compose ps
查看日志:
docker compose logs -f app
如果某个服务启动失败,可以单独查看:
docker compose logs -f postgres
docker compose logs -f redis
docker compose logs -f qdrant
docker compose logs -f nginx
检查容器网络:
docker network ls
docker network inspect my-ai-app_ai_net
检查端口监听:
ss -tulnp | grep -E '80|443'
如果域名解析已经配置到服务器 IP,此时可以通过浏览器访问:
http://ai.example.com
十、配置 HTTPS 证书
生产环境不建议长期使用 HTTP,尤其是 AI 工具中可能包含用户登录、API Key、文档上传、聊天记录等敏感信息,必须启用 HTTPS。
方案一:使用 Caddy 自动签发证书
如果你希望简化 HTTPS 配置,可以把 Nginx 换成 Caddy。Caddy 可以自动申请和续期 Let's Encrypt 证书。
示例 Caddyfile:
ai.example.com {
reverse_proxy app:3000
}
Docker Compose 中使用:
caddy:
image: caddy:latest
container_name: ai_caddy
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./data/caddy:/data
- ./config/caddy:/config
networks:
- ai_net
这种方式适合希望快速上线的团队。
方案二:Nginx + Certbot
如果继续使用 Nginx,可以通过 Certbot 获取证书:
sudo apt install -y certbot
sudo certbot certonly --standalone -d ai.example.com
证书路径通常为:
/etc/letsencrypt/live/ai.example.com/fullchain.pem
/etc/letsencrypt/live/ai.example.com/privkey.pem
然后可以挂载到 Nginx 容器中,配置 HTTPS:
server {
listen 80;
server_name ai.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name ai.example.com;
ssl_certificate /etc/nginx/certs/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/privkey.pem;
client_max_body_size 100M;
location / {
proxy_pass http://app:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}
十一、生产环境数据持久化策略
Docker 容器本身是可以删除和重建的,因此生产环境一定要做好数据持久化。常见需要持久化的数据包括:
- PostgreSQL 数据;
- Redis AOF/RDB 数据;
- 向量数据库数据;
- MinIO 文件;
- 应用上传文件;
- 日志文件;
- 配置文件。
本文示例中通过本地目录挂载实现持久化,例如:
volumes:
- ./data/postgres:/var/lib/postgresql/data
这意味着 PostgreSQL 数据实际保存在宿主机的:
/opt/ai-tools/my-ai-app/data/postgres
即使容器被删除,只要该目录还在,数据就不会丢失。
但要注意:持久化不等于备份。磁盘损坏、误删除、勒索软件、服务器故障都可能导致数据丢失。因此生产环境必须配置备份机制。
十二、数据库备份与恢复
以 PostgreSQL 为例,可以编写备份脚本:
mkdir -p backup
docker exec ai_postgres pg_dump \
-U aiuser \
-d aiapp \
> backup/aiapp_$(date +%Y%m%d_%H%M%S).sql
也可以创建 backup.sh:
#!/bin/bash
BACKUP_DIR="/opt/ai-tools/my-ai-app/backup"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
docker exec ai_postgres pg_dump -U aiuser -d aiapp \
> $BACKUP_DIR/postgres_$DATE.sql
tar -czf $BACKUP_DIR/uploads_$DATE.tar.gz \
/opt/ai-tools/my-ai-app/data/uploads
tar -czf $BACKUP_DIR/minio_$DATE.tar.gz \
/opt/ai-tools/my-ai-app/data/minio
find $BACKUP_DIR -type f -mtime +14 -delete
添加执行权限:
chmod +x backup.sh
配置定时任务:
crontab -e
每天凌晨 3 点备份:
0 3 * * * /opt/ai-tools/my-ai-app/backup.sh >> /opt/ai-tools/my-ai-app/logs/backup.log 2>&1
恢复 PostgreSQL 数据:
cat backup/postgres_20250101_030000.sql | docker exec -i ai_postgres psql -U aiuser -d aiapp
生产环境建议备份到异地,例如对象存储、NAS、另一台服务器或云厂商快照服务,避免本机故障导致备份一起丢失。
十三、日志管理与问题排查
Docker 默认会保存容器日志,如果长时间不处理,日志可能占满磁盘。可以配置 Docker 日志限制。
编辑 Docker daemon 配置:
sudo vim /etc/docker/daemon.json
写入:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "200m",
"max-file": "5"
}
}
重启 Docker:
sudo systemctl restart docker
注意:重启 Docker 会影响正在运行的容器,建议在维护窗口操作。
常用排查命令:
docker compose ps
docker compose logs -f app
docker stats
docker inspect ai_app
docker exec -it ai_app sh
docker compose restart app
如果应用无法连接数据库,重点检查:
.env中数据库用户名和密码是否正确;- Compose 服务名是否写对,例如数据库地址应为
postgres,不是localhost; - PostgreSQL 容器是否健康;
- 数据库端口是否在容器网络内可达;
- 应用是否在数据库完全启动前就开始初始化。
如果 Nginx 访问 502,重点检查:
- app 容器是否正常运行;
proxy_pass地址是否正确;- app 服务监听端口是否为
3000; - app 是否只监听
127.0.0.1,而不是0.0.0.0; - Nginx 和 app 是否在同一个 Docker 网络中。
十四、安全加固建议
AI 工具生产环境经常涉及敏感信息,例如企业文档、客户数据、内部知识库、API Key 和聊天记录,因此安全配置非常重要。
1. 不暴露数据库端口
生产环境中,PostgreSQL、Redis、Qdrant、MinIO 等服务不应直接暴露到公网。如果需要管理,可以通过 SSH 隧道或 VPN 访问。
错误示例:
ports:
- "5432:5432"
如果不是必须,不要这样配置。
2. 使用强密码和最小权限
.env 中所有密码都要使用强密码,例如:
长度不少于 16 位,包含大小写字母、数字和特殊字符
同时不要使用默认账号密码,例如:
admin/admin
root/password
minioadmin/minioadmin
3. 限制服务器防火墙
可以使用 UFW:
sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
sudo ufw status
如果 SSH 使用自定义端口,需要提前放行,避免把自己锁在服务器外。
4. 定期更新镜像
可以定期拉取新镜像:
docker compose pull
docker compose up -d
但生产环境不建议盲目使用 latest 标签。更推荐使用固定版本,例如:
image: postgres:16.2
image: redis:7.2
这样可以避免镜像更新后出现不可预期问题。
5. API Key 不要写入前端代码
很多 AI 工具需要配置大模型 API Key。务必确保 API Key 只保存在后端环境变量或密钥管理系统中,不要暴露在前端页面、浏览器请求或公开仓库中。
十五、生产环境实测优化经验
以下是实际部署 AI 工具时比较常见、也比较有价值的经验。
1. AI 响应时间较长,要调大超时时间
大模型生成内容可能需要几十秒甚至几分钟。如果 Nginx 默认超时时间太短,用户会遇到请求中断。因此建议设置:
proxy_read_timeout 300s;
proxy_send_timeout 300s;
如果是长文生成、文件解析、Agent 自动任务,可以进一步调大。
2. 文件上传要限制大小
AI 知识库经常支持 PDF、Word、Excel、图片等文件上传。如果不限制大小,可能导致磁盘被恶意占满。可以在 Nginx 和应用层同时限制,例如:
client_max_body_size 100M;
同时在应用配置中限制单文件大小和用户总容量。
3. 向量数据库要单独备份
很多人只备份 PostgreSQL,忘记备份向量数据库。对于知识库系统来说,向量库非常关键。如果丢失,虽然可以重新解析文档生成 embedding,但会消耗大量时间和 API 成本。
因此建议备份:
data/vector
或者使用向量数据库自身的 snapshot 功能。
4. 不要在生产环境随意清理 Docker
很多运维习惯执行:
docker system prune -a
这个命令会删除未使用镜像、容器、网络和构建缓存。如果不熟悉,很可能误删生产环境需要的资源。建议清理前先查看:
docker system df
docker images
docker volume ls
对于绑定目录的数据通常不会被删除,但 Docker volume 有误删风险。
5. 设置健康检查
对于关键服务,建议增加 healthcheck。这样可以更容易判断服务是否真正可用,而不是容器仅仅处于 running 状态。
例如 PostgreSQL:
healthcheck:
test: ["CMD-SHELL", "pg_isready -U aiuser -d aiapp"]
interval: 10s
timeout: 5s
retries: 5
对于应用服务,如果有 /health 接口,也可以配置:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
十六、如果需要部署本地大模型
如果 AI 工具需要调用本地模型,可以在 Docker Compose 中增加 Ollama、vLLM 或 text-generation-inference 等服务。
以 Ollama 为例:
ollama:
image: ollama/ollama:latest
container_name: ai_ollama
restart: always
volumes:
- ./data/ollama:/root/.ollama
networks:
- ai_net
ports:
- "11434:11434"
如果需要 GPU,需要安装 NVIDIA Container Toolkit:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
| sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container-toolkit.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
验证 GPU 是否可用:
docker run --rm --gpus all nvidia/cuda:12.3.0-base-ubuntu22.04 nvidia-smi
如果能看到 GPU 信息,说明 Docker 已经可以调用显卡。
十七、升级与回滚策略
生产环境最怕“升级后不可用”。因此推荐使用以下流程:
- 在测试环境先升级;
- 备份数据库和关键数据;
- 拉取新镜像;
- 停止旧容器;
- 启动新容器;
- 检查日志和核心功能;
- 如果异常,立即回滚旧版本。
不要长期使用:
image: your-ai-app:latest
更推荐:
image: your-ai-app:1.3.2
升级时改成:
image: your-ai-app:1.3.3
如果新版本异常,只需要改回旧版本并执行:
docker compose up -d
即可快速回滚。
十八、完整上线检查清单
正式上线前,建议按以下清单检查:
- [ ] 域名已经解析到服务器;
- [ ] Docker 和 Docker Compose 安装正常;
- [ ]
.env中密码和 API Key 已修改; - [ ] 数据库、Redis、向量库没有暴露公网端口;
- [ ] Nginx 或 Caddy 已配置 HTTPS;
- [ ] 文件上传大小限制已设置;
- [ ] 容器日志大小限制已配置;
- [ ] 数据库备份脚本已测试;
- [ ] 备份文件可以正常恢复;
- [ ] 防火墙只开放必要端口;
- [ ] AI 工具核心功能测试通过;
- [ ] 多用户并发访问测试通过;
- [ ] API Key 没有出现在前端代码和公开日志中;
- [ ] 已记录升级和回滚方案。
十九、总结
使用 Docker 部署 AI 工具,最大的价值不是“启动快”,而是让整个生产环境变得可复制、可维护、可迁移。对于 AI 应用来说,环境依赖复杂、服务组件众多、数据类型多样,如果没有容器化和标准化部署,很容易在后续维护中出现问题。
生产环境部署 AI 工具时,建议重点关注以下几点:
- 使用 Docker Compose 管理多服务;
- 只暴露 Nginx 或 Caddy,不直接暴露数据库;
- 所有关键数据必须持久化;
- 备份比持久化更重要;
- HTTPS 是生产环境必选项;
- API Key 和用户数据要重点保护;
- 升级前必须备份,并保留回滚方案;
- 本地模型部署需要额外关注 GPU 驱动和显存资源。
如果你的 AI 工具只是个人使用,按照本文方案可以快速完成上线;如果是企业内部生产系统,可以在此基础上继续扩展监控告警、集中日志、CI/CD、灰度发布和 Kubernetes 编排。总体来看,Docker 是 AI 工具从“能跑起来”走向“稳定运行”的关键一步。