AI Agent Docker Compose部署:单机多服务编排
AI Agent Docker Compose部署:单机多服务编排
💡 你将学到
AI Agent Docker Compose部署:单机多服务编排
AI Agent Docker Compose部署:单机多服务编排
一个正经的Agent系统很少只有一个进程:API服务、向量库、缓存、任务队列、模型运行器,往往要五六个服务一起跑。手动一个个启动既容易漏又难管理。Docker Compose用一份YAML声明所有服务,一条命令拉起、一条命令停止,是单机部署的事实标准。这篇给出一套可以直接抄的完整配置。
一、为什么用Compose
| 方案 | 优点 | 缺点 |
|---|---|---|
| 裸进程(systemd) | 无额外依赖 | 依赖顺序自己管、环境不一致 |
| 单个Docker容器 | 环境隔离 | 多服务时启动顺序、网络、日志全靠手 |
| Docker Compose | 一份文件管全部、可复现 | 只适合单机(多机用K8s) |
二、目录结构
my-agent/
├── docker-compose.yml
├── .env # 密钥、端口等配置
└── agent/
├── Dockerfile
└── app.py
三、完整的docker-compose.yml
services:
api: # Agent API服务
build: ./agent
ports: ["8000:8000"]
env_file: .env
depends_on:
redis:
condition: service_healthy
postgres:
condition: service_healthy
restart: unless-stopped
redis: # 缓存 + 限流计数
image: redis:7-alpine
volumes: ["redis-data:/data"]
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
retries: 5
postgres: # 业务数据 + 向量数据
image: postgres:16-alpine
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes: ["pg-data:/var/lib/postgresql/data"]
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
retries: 5
ollama: # 本地模型(可选)
image: ollama/ollama
volumes: ["ollama-data:/root/.ollama"]
ports: ["11434:11434"]
volumes:
redis-data:
pg-data:
ollama-data:
关键点:
depends_on+healthcheck:保证redis和postgres就绪后再启动api,避免启动即报错- 数据全部挂volume:容器删了数据还在
env_file: .env:密钥不进代码仓库restart: unless-stopped:进程崩了自动拉起
四、常用命令
| 命令 | 作用 |
|---|---|
docker compose up -d |
后台启动全部服务 |
docker compose logs -f api |
跟踪某个服务的日志 |
docker compose ps |
查看各服务状态 |
docker compose restart api |
重启单个服务 |
docker compose pull && docker compose up -d |
升级镜像 |
docker compose down |
停止并删除容器(数据卷保留) |
五、生产化注意
- 资源限制:给每个服务设mem_limit,防止Ollama把内存吃光连累API服务
- 日志轮转:加
logging: {options: {max-size: "10m", max-file: "3"}},防止日志撑爆磁盘 - 密钥管理:.env不要提交git,服务器上单独放一份
- 升级策略:先
docker compose pull看镜像更新,再up -d;出问题用docker compose down && docker compose up -d回滚
常见问题
Q:Ollama要放进Compose吗? A:推荐。容器化后换机器部署不用重装依赖,模型文件存在volume里,重建容器不丢。
Q:端口冲突怎么办?
A:改映射左边端口,如 "8001:8000";或者API服务不暴露端口,只在Compose内部网络里互相访问。
Q:Compose和K8s怎么选? A:单机或两三台机器用Compose足够;要自动扩容、跨机器调度再上Kubernetes,学习成本高一个量级。
Q:Windows/Mac能跑吗? A:Docker Desktop直接支持,注意文件挂载性能差异;生产环境建议Linux服务器。
注:镜像标签(redis:7-alpine等)随版本更新,生产环境建议锁定具体版本号。
相关文章
相关文章
2026-08-01
OpenRouter教程:一个API Key用所有LLM
2026-07-19
MCP协议详解:让AI连接一切工具的开放标准
2026-07-19
开源TTS语音合成:Edge TTS和ChatTTS怎么选
本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。
