用 Docker Compose 搭一套 AI 办公平台:从配置文件到上线运维
AI办公 Docker部署教程|附配置文件
随着企业数字化办公的不断深入,越来越多团队开始将 AI 能力接入日常工作流,例如:智能问答、文档总结、会议纪要生成、知识库检索、代码辅助、客服自动回复、办公自动化审批等。相比传统软件部署方式,使用 Docker 部署 AI 办公系统具有环境一致、迁移方便、维护简单、扩展灵活等优势,非常适合企业内网、个人服务器、云服务器以及实验室环境使用。
本文将以一个通用的“AI 办公平台”部署思路为例,介绍如何使用 Docker Compose 快速搭建一套包含 Web 服务、数据库、缓存、向量数据库、反向代理等组件的 AI 办公系统。文章会提供完整配置文件示例,适合有一定 Linux 基础的用户参考使用。
说明:本文以通用 AI 办公系统架构为例,不绑定某一个具体商业产品。你可以将本文中的
ai-office理解为一个支持大模型调用、知识库问答、文件管理、用户管理和办公自动化功能的 Web 应用。如果你部署的是具体开源项目,也可以根据项目实际镜像名和环境变量进行替换。
一、AI办公系统常见架构
一个完整的 AI 办公系统,通常不仅仅是一个 Web 页面,而是由多个服务组成。常见架构如下:
用户浏览器
│
▼
Nginx / Caddy 反向代理
│
▼
AI办公 Web 服务 / API 服务
│
├── PostgreSQL / MySQL 数据库
├── Redis 缓存
├── 向量数据库 Milvus / Qdrant / Chroma
├── 文件存储 MinIO / 本地磁盘
└── 大模型接口 OpenAI / 通义千问 / DeepSeek / Ollama
其中各组件作用如下:
| 组件 | 作用 |
|---|---|
| Web/API 服务 | 提供用户界面、接口、业务逻辑 |
| PostgreSQL/MySQL | 存储用户、权限、文件记录、会话记录等结构化数据 |
| Redis | 缓存登录状态、任务队列、临时数据 |
| 向量数据库 | 存储知识库文档切片后的向量,用于语义检索 |
| MinIO | 存储上传的文档、图片、附件等对象文件 |
| Nginx | 反向代理、HTTPS 证书、访问控制 |
| 大模型服务 | 提供文本生成、总结、问答、代码生成等能力 |
在实际企业部署中,AI 办公平台经常还会对接 LDAP、企业微信、钉钉、飞书、邮件服务器、OA 系统等,但本文先聚焦基础 Docker 部署。
二、服务器环境准备
1. 推荐配置
根据使用人数和知识库规模不同,推荐配置会有所差异。一般来说:
| 使用场景 | CPU | 内存 | 磁盘 | 说明 |
|---|---|---|---|---|
| 个人测试 | 2 核 | 4GB | 40GB | 可运行基础服务 |
| 小团队 | 4 核 | 8GB | 100GB | 支持多人轻量使用 |
| 企业内网 | 8 核+ | 16GB+ | 200GB+ | 建议拆分数据库与应用 |
| 本地大模型 | 8 核+ / GPU | 32GB+ | 500GB+ | 视模型大小而定 |
如果你只调用外部大模型 API,例如 DeepSeek、OpenAI、通义千问、智谱、Moonshot 等,那么服务器不需要 GPU。如果你希望本地运行模型,例如通过 Ollama 部署 Qwen、Llama、DeepSeek-R1-Distill 等模型,则需要更高配置,最好具备 NVIDIA GPU。
2. 操作系统建议
推荐使用以下系统:
- Ubuntu 22.04 LTS
- Ubuntu 24.04 LTS
- Debian 12
- CentOS Stream / Rocky Linux / AlmaLinux
本文以 Ubuntu 22.04 为例。
三、安装 Docker 和 Docker Compose
1. 更新系统软件包
sudo apt update
sudo apt upgrade -y
2. 安装必要依赖
sudo apt install -y ca-certificates curl gnupg lsb-release
3. 安装 Docker
可以使用官方脚本快速安装:
curl -fsSL https://get.docker.com | sudo bash
安装完成后查看版本:
docker -v
如果能看到类似下面输出,说明安装成功:
Docker version 27.x.x, build xxxxx
4. 安装 Docker Compose
新版 Docker 一般已经内置 Compose 插件,可以执行:
docker compose version
如果显示版本号,例如:
Docker Compose version v2.x.x
说明可正常使用。
5. 将当前用户加入 Docker 组
sudo usermod -aG docker $USER
执行后建议重新登录服务器,或者执行:
newgrp docker
四、创建项目目录
为了方便管理,我们将 AI 办公系统部署到 /opt/ai-office 目录。
sudo mkdir -p /opt/ai-office
sudo chown -R $USER:$USER /opt/ai-office
cd /opt/ai-office
建议目录结构如下:
/opt/ai-office
├── docker-compose.yml
├── .env
├── nginx
│ └── default.conf
├── data
│ ├── postgres
│ ├── redis
│ ├── minio
│ └── qdrant
└── logs
创建目录:
mkdir -p nginx data/postgres data/redis data/minio data/qdrant logs
五、编写环境变量配置文件
在项目根目录创建 .env 文件:
nano .env
写入以下内容:
# =========================
# 基础配置
# =========================
APP_NAME=AI Office
APP_ENV=production
APP_PORT=8080
APP_URL=https://ai.example.com
# 请务必修改为随机字符串
APP_SECRET=change_this_to_a_long_random_secret
# =========================
# 数据库配置
# =========================
POSTGRES_DB=ai_office
POSTGRES_USER=ai_office_user
POSTGRES_PASSWORD=change_this_postgres_password
POSTGRES_PORT=5432
DATABASE_URL=postgresql://ai_office_user:change_this_postgres_password@postgres:5432/ai_office
# =========================
# Redis配置
# =========================
REDIS_PASSWORD=change_this_redis_password
REDIS_PORT=6379
REDIS_URL=redis://:change_this_redis_password@redis:6379/0
# =========================
# MinIO对象存储配置
# =========================
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=change_this_minio_password
MINIO_API_PORT=9000
MINIO_CONSOLE_PORT=9001
S3_ENDPOINT=http://minio:9000
S3_ACCESS_KEY=admin
S3_SECRET_KEY=change_this_minio_password
S3_BUCKET=ai-office
S3_REGION=us-east-1
# =========================
# 向量数据库配置
# =========================
QDRANT_PORT=6333
VECTOR_DB=qdrant
QDRANT_URL=http://qdrant:6333
# =========================
# 大模型API配置
# =========================
LLM_PROVIDER=deepseek
LLM_API_BASE=https://api.deepseek.com
LLM_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
LLM_MODEL=deepseek-chat
# 如果使用OpenAI,可参考:
# LLM_PROVIDER=openai
# LLM_API_BASE=https://api.openai.com/v1
# LLM_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
# LLM_MODEL=gpt-4o-mini
# 如果使用通义千问,可根据具体项目配置:
# LLM_PROVIDER=dashscope
# LLM_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
# LLM_MODEL=qwen-plus
# =========================
# 嵌入模型配置
# =========================
EMBEDDING_PROVIDER=openai-compatible
EMBEDDING_API_BASE=https://api.openai.com/v1
EMBEDDING_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
EMBEDDING_MODEL=text-embedding-3-small
# =========================
# 文件上传限制
# =========================
UPLOAD_MAX_SIZE=50MB
ALLOW_FILE_TYPES=pdf,docx,doc,txt,md,xlsx,pptx,png,jpg,jpeg
# =========================
# 管理员账号初始化
# =========================
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=ChangeThisAdminPassword123
需要注意:
APP_SECRET必须修改为足够长的随机字符串;- 数据库、Redis、MinIO 密码不要使用默认值;
APP_URL要改成你的实际访问域名;LLM_API_KEY根据你使用的大模型服务填写;- 如果部署在内网,也可以将
APP_URL设置为http://服务器IP:端口。
生成随机密钥可以使用:
openssl rand -base64 32
六、编写 Docker Compose 配置文件
在 /opt/ai-office 目录创建 docker-compose.yml:
nano docker-compose.yml
写入以下内容:
services:
ai-office:
image: your-registry/ai-office:latest
container_name: ai-office
restart: unless-stopped
env_file:
- .env
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started
qdrant:
condition: service_started
minio:
condition: service_started
ports:
- "${APP_PORT}:8080"
volumes:
- ./logs:/app/logs
- ./data/uploads:/app/uploads
networks:
- ai-office-net
postgres:
image: postgres:16-alpine
container_name: ai-office-postgres
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
TZ: Asia/Shanghai
ports:
- "${POSTGRES_PORT}:5432"
volumes:
- ./data/postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
networks:
- ai-office-net
redis:
image: redis:7-alpine
container_name: ai-office-redis
restart: unless-stopped
command: >
redis-server
--requirepass ${REDIS_PASSWORD}
--appendonly yes
ports:
- "${REDIS_PORT}:6379"
volumes:
- ./data/redis:/data
networks:
- ai-office-net
qdrant:
image: qdrant/qdrant:latest
container_name: ai-office-qdrant
restart: unless-stopped
ports:
- "${QDRANT_PORT}:6333"
volumes:
- ./data/qdrant:/qdrant/storage
networks:
- ai-office-net
minio:
image: minio/minio:latest
container_name: ai-office-minio
restart: unless-stopped
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
TZ: Asia/Shanghai
ports:
- "${MINIO_API_PORT}:9000"
- "${MINIO_CONSOLE_PORT}:9001"
volumes:
- ./data/minio:/data
networks:
- ai-office-net
networks:
ai-office-net:
driver: bridge
这里需要重点说明:
ai-office是应用主服务,你需要把your-registry/ai-office:latest替换为实际镜像;- PostgreSQL 用于存储业务数据;
- Redis 用于缓存和任务队列;
- Qdrant 用于知识库向量检索;
- MinIO 用于文件对象存储;
- 所有服务使用同一个 Docker 网络,容器之间可通过服务名互相访问,例如
postgres:5432、redis:6379。
如果你的 AI 办公项目不需要 MinIO 或 Qdrant,可以删除对应服务,但多数知识库类项目都需要向量数据库。
七、启动服务
在项目目录执行:
docker compose up -d
查看容器状态:
docker compose ps
正常情况下可以看到类似:
NAME STATUS
ai-office Up
ai-office-postgres Up healthy
ai-office-redis Up
ai-office-qdrant Up
ai-office-minio Up
查看日志:
docker compose logs -f ai-office
如果应用启动成功,通常会看到数据库连接成功、服务监听端口、初始化管理员账号等日志。
八、初始化 MinIO 存储桶
如果应用不会自动创建 Bucket,可以手动创建。先进入 MinIO 控制台:
http://服务器IP:9001
使用 .env 中配置的账号密码登录:
用户名:MINIO_ROOT_USER
密码:MINIO_ROOT_PASSWORD
然后创建一个名为:
ai-office
的 Bucket。
也可以使用 MinIO Client 创建:
docker run --rm -it --network ai-office_ai-office-net minio/mc:latest sh
进入容器后执行:
mc alias set local http://minio:9000 admin change_this_minio_password
mc mb local/ai-office
mc anonymous set none local/ai-office
注意将密码替换为你的实际 MinIO 密码。
九、配置 Nginx 反向代理
如果你希望通过域名访问,例如:
https://ai.example.com
建议使用 Nginx 作为反向代理。你可以选择直接在宿主机安装 Nginx,也可以用 Docker 启动 Nginx。下面提供 Docker 方式。
1. 创建 Nginx 配置
创建 nginx/default.conf:
nano nginx/default.conf
写入:
server {
listen 80;
server_name ai.example.com;
client_max_body_size 100m;
location / {
proxy_pass http://ai-office:8080;
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 $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}
2. 将 Nginx 加入 Compose
如果你希望 Nginx 也由 Docker Compose 管理,可以在 docker-compose.yml 中追加:
nginx:
image: nginx:1.27-alpine
container_name: ai-office-nginx
restart: unless-stopped
depends_on:
- ai-office
ports:
- "80:80"
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
networks:
- ai-office-net
添加后重新启动:
docker compose up -d
然后访问:
http://ai.example.com
如果域名还没有解析,需要先在 DNS 服务商处添加 A 记录,将域名指向服务器公网 IP。
十、配置 HTTPS 证书
生产环境强烈建议启用 HTTPS。常见方式有两种:
- 使用宿主机 Nginx + Certbot;
- 使用 Caddy 自动申请证书;
- 使用 Docker 版 Nginx Proxy Manager;
- 手动上传证书到 Nginx 容器。
这里给出一个简单的 Caddy 配置方案。
1. 添加 Caddyfile
创建目录:
mkdir -p caddy
nano caddy/Caddyfile
写入:
ai.example.com {
reverse_proxy ai-office:8080
request_body {
max_size 100MB
}
}
2. Compose 中添加 Caddy 服务
caddy:
image: caddy:2-alpine
container_name: ai-office-caddy
restart: unless-stopped
depends_on:
- ai-office
ports:
- "80:80"
- "443:443"
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro
- ./data/caddy/data:/data
- ./data/caddy/config:/config
networks:
- ai-office-net
使用 Caddy 时,你可以不再使用 Nginx。Caddy 会自动申请和续期 Let’s Encrypt 证书,但前提是:
- 域名已经解析到当前服务器;
- 服务器的 80 和 443 端口开放;
- 云服务器安全组允许 80/443 入站访问。
十一、使用 Ollama 部署本地大模型
如果你不希望调用外部 API,也可以在本地部署 Ollama。Ollama 可以较方便地运行 Qwen、Llama、DeepSeek-R1-Distill 等模型。
1. Compose 添加 Ollama
在 docker-compose.yml 中添加:
ollama:
image: ollama/ollama:latest
container_name: ai-office-ollama
restart: unless-stopped
ports:
- "11434:11434"
volumes:
- ./data/ollama:/root/.ollama
networks:
- ai-office-net
启动:
docker compose up -d
2. 下载模型
例如下载 Qwen2.5 7B:
docker exec -it ai-office-ollama ollama pull qwen2.5:7b
或者下载 DeepSeek-R1 蒸馏模型:
docker exec -it ai-office-ollama ollama pull deepseek-r1:7b
3. 修改 .env
如果你的应用支持 OpenAI Compatible 接口,可以这样配置:
LLM_PROVIDER=openai-compatible
LLM_API_BASE=http://ollama:11434/v1
LLM_API_KEY=ollama
LLM_MODEL=qwen2.5:7b
然后重启应用:
docker compose restart ai-office
需要注意,本地模型效果和速度取决于服务器配置。如果没有 GPU,7B 模型可能响应较慢;如果用于企业多人并发,建议使用 GPU 或调用云端大模型 API。
十二、首次访问与系统初始化
服务启动后,如果没有配置域名,可以通过以下地址访问:
http://服务器IP:8080
如果配置了反向代理:
http://ai.example.com
或:
https://ai.example.com
首次进入系统后,一般需要完成以下设置:
- 创建管理员账号;
- 配置大模型供应商;
- 配置 Embedding 模型;
- 创建知识库;
- 上传测试文档;
- 测试文档问答;
- 添加普通用户;
- 配置部门、权限和角色;
- 根据实际办公流程配置智能助手。
如果系统支持初始化管理员账号,可以直接使用 .env 中配置的:
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=ChangeThisAdminPassword123
登录后请立即修改管理员密码。
十三、知识库使用建议
AI 办公系统最常用的能力之一就是知识库问答。部署完成后,可以按照以下流程创建知识库:
- 新建知识库,例如“公司制度库”“产品文档库”“客服话术库”;
- 上传 PDF、Word、Markdown、TXT 等文件;
- 等待系统解析文件并切片;
- 调用 Embedding 模型生成向量;
- 存入 Qdrant 等向量数据库;
- 用户提问时先进行向量检索;
- 将检索结果作为上下文交给大模型生成回答。
为了获得更好的效果,建议:
- 文档标题清晰;
- 文件内容结构化,例如使用一级标题、二级标题;
- 避免上传大量扫描版 PDF;
- 重要制度文档尽量使用 Markdown、DOCX、TXT;
- 定期更新失效内容;
- 对敏感知识库设置访问权限;
- 对模型回答增加“引用来源”要求。
如果系统支持 Prompt 配置,可以为知识库助手添加类似提示词:
你是企业内部知识库助手。
回答问题时必须基于已检索到的文档内容。
如果文档中没有相关信息,请明确说明“当前知识库未找到相关内容”,不要编造。
回答要简洁、准确,并尽可能列出依据来源。
十四、常用运维命令
1. 查看服务状态
docker compose ps
2. 查看全部日志
docker compose logs -f
3. 查看某个服务日志
docker compose logs -f ai-office
docker compose logs -f postgres
docker compose logs -f redis
docker compose logs -f qdrant
4. 重启服务
docker compose restart
重启单个服务:
docker compose restart ai-office
5. 停止服务
docker compose down
6. 更新镜像
docker compose pull
docker compose up -d
7. 进入容器
docker exec -it ai-office sh
或者:
docker exec -it ai-office bash
具体取决于镜像是否包含 bash。
十五、数据备份方案
AI 办公系统涉及大量重要数据,包括用户数据、聊天记录、知识库文档、向量数据、对象存储文件等。生产环境必须定期备份。
1. 备份 PostgreSQL
mkdir -p /opt/ai-office/backup
docker exec ai-office-postgres pg_dump \
-U ai_office_user \
ai_office > /opt/ai-office/backup/ai_office_$(date +%F).sql
2. 备份 MinIO 文件
如果使用本地挂载目录,可以直接打包:
tar -czf /opt/ai-office/backup/minio_$(date +%F).tar.gz /opt/ai-office/data/minio
3. 备份 Qdrant 数据
tar -czf /opt/ai-office/backup/qdrant_$(date +%F).tar.gz /opt/ai-office/data/qdrant
4. 编写自动备份脚本
创建脚本:
nano /opt/ai-office/backup.sh
写入:
#!/bin/bash
set -e
BACKUP_DIR="/opt/ai-office/backup"
DATE=$(date +%F_%H-%M-%S)
mkdir -p "$BACKUP_DIR"
echo "开始备份数据库..."
docker exec ai-office-postgres pg_dump \
-U ai_office_user \
ai_office > "$BACKUP_DIR/postgres_$DATE.sql"
echo "开始备份MinIO..."
tar -czf "$BACKUP_DIR/minio_$DATE.tar.gz" /opt/ai-office/data/minio
echo "开始备份Qdrant..."
tar -czf "$BACKUP_DIR/qdrant_$DATE.tar.gz" /opt/ai-office/data/qdrant
echo "清理30天前的备份..."
find "$BACKUP_DIR" -type f -mtime +30 -delete
echo "备份完成:$DATE"
赋予执行权限:
chmod +x /opt/ai-office/backup.sh
添加定时任务:
crontab -e
每天凌晨 2 点备份:
0 2 * * * /opt/ai-office/backup.sh >> /opt/ai-office/backup/backup.log 2>&1
十六、安全加固建议
AI 办公系统往往包含企业内部文档,因此安全非常重要。
1. 修改所有默认密码
包括:
- 管理员密码;
- 数据库密码;
- Redis 密码;
- MinIO 密码;
- 大模型 API Key;
- 服务器 SSH 密码或密钥。
2. 限制数据库端口暴露
如果 PostgreSQL、Redis、Qdrant 只给 Docker 内部服务访问,建议不要映射到公网端口。可以删除以下配置:
ports:
- "${POSTGRES_PORT}:5432"
Redis、Qdrant 同理。生产环境通常只暴露 Web 服务端口或反向代理端口。
3. 配置防火墙
Ubuntu 可以使用 UFW:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status
如果你只通过 8080 访问,也可以开放:
sudo ufw allow 8080/tcp
但生产环境更推荐只开放 80/443。
4. 使用 HTTPS
登录、文件上传、API Key 配置等操作都应通过 HTTPS 进行,避免明文传输。
5. 控制知识库权限
不同部门的文档不要放在同一个公共知识库中。建议按照部门、项目、密级划分权限,例如:
- 公共制度库;
- 产品知识库;
- 财务制度库;
- 人事制度库;
- 客服知识库;
- 研发技术文档库。
6. 定期轮换 API Key
如果系统调用第三方大模型 API,建议定期更换 Key,并设置调用额度,避免 Key 泄露后产生高额费用。
十七、常见问题排查
1. 页面无法访问
检查容器是否启动:
docker compose ps
检查端口是否监听:
ss -tunlp | grep 8080
检查防火墙和云服务器安全组是否放行端口。
2. 数据库连接失败
查看 PostgreSQL 日志:
docker compose logs -f postgres
确认 .env 中的 DATABASE_URL 是否正确,尤其是用户名、密码、数据库名和主机名。Docker 内部连接数据库时,主机名应该使用服务名:
postgres
而不是 127.0.0.1。
3. Redis 认证失败
确认 REDIS_PASSWORD 和 REDIS_URL 中密码一致:
REDIS_PASSWORD=change_this_redis_password
REDIS_URL=redis://:change_this_redis_password@redis:6379/0
修改后重启:
docker compose restart redis ai-office
4. 知识库上传后无法问答
可能原因包括:
- Embedding API Key 配置错误;
- 向量数据库未启动;
- 文档解析失败;
- 文件格式不支持;
- 模型上下文长度不足;
- 知识库没有完成索引。
排查日志:
docker compose logs -f ai-office
docker compose logs -f qdrant
5. MinIO 上传失败
检查 Bucket 是否存在,确认以下配置一致:
S3_ENDPOINT=http://minio:9000
S3_ACCESS_KEY=admin
S3_SECRET_KEY=change_this_minio_password
S3_BUCKET=ai-office
如果应用运行在 Docker 网络内,Endpoint 应该使用:
http://minio:9000
如果外部工具访问 MinIO,则使用服务器 IP 或域名。
6. 大模型调用失败
常见原因:
- API Key 错误;
- 模型名称不正确;
- API Base 地址缺少
/v1; - 账户余额不足;
- 服务商网络访问受限;
- 请求超时。
建议先用 curl 测试接口,例如 OpenAI Compatible 接口:
curl "${LLM_API_BASE}/chat/completions" \
-H "Authorization: Bearer ${LLM_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-chat",
"messages": [
{"role": "user", "content": "你好,请简单介绍一下你自己"}
]
}'
十八、生产环境优化建议
当 AI 办公系统从测试走向生产时,可以进一步优化:
1. 服务拆分
将数据库、对象存储、向量数据库拆分到独立服务器,提升稳定性。
2. 使用云数据库
如果团队没有专业 DBA,可以考虑使用云厂商 PostgreSQL、Redis、对象存储服务,降低运维压力。
3. 增加监控
可以使用 Prometheus、Grafana、Uptime Kuma 等工具监控:
- 服务在线状态;
- CPU 使用率;
- 内存使用率;
- 磁盘空间;
- API 调用耗时;
- 大模型调用错误率。
4. 日志归档
生产环境不要只依赖容器日志,建议接入 ELK、Loki、Graylog 等日志系统,便于排查问题。
5. 设置资源限制
可以在 Compose 中为服务设置资源限制,避免某个服务占满服务器资源。例如:
deploy:
resources:
limits:
cpus: "2"
memory: 4G
需要注意,普通 Docker Compose 对 deploy 字段支持有限,部分配置主要用于 Swarm。如果需要更严格的资源限制,可以使用 Docker run 参数或 Kubernetes。
十九、完整部署流程总结
整体流程可以总结为:
安装 Docker
↓
创建项目目录
↓
编写 .env
↓
编写 docker-compose.yml
↓
启动服务
↓
初始化 MinIO Bucket
↓
配置大模型 API
↓
配置域名和 HTTPS
↓
创建知识库
↓
上传文档测试
↓
设置备份和安全策略
对于个人或小团队来说,使用 Docker Compose 部署 AI 办公平台是成本最低、上手最快的方案。它既能满足日常知识库问答、文档总结、智能写作等需求,也方便后续迁移到更复杂的 Kubernetes 或云原生环境。
二十、结语
AI 办公系统的核心价值并不只是“接入一个聊天机器人”,而是将大模型能力与企业内部知识、流程和数据结合起来。通过 Docker 部署,我们可以快速搭建一套可控、可迁移、可扩展的 AI 办公基础平台,并在此基础上逐步扩展知识库、智能助手、自动化流程、数据分析等功能。
本文提供了从环境准备、Docker Compose 编排、数据库配置、对象存储、向量数据库、反向代理、HTTPS、本地模型、备份、安全加固到故障排查的一整套参考方案。你可以根据实际项目镜像和业务需求调整配置文件,最终形成适合自己团队的 AI 办公部署方案。
如果是生产环境,务必重点关注三件事:数据安全、定期备份、权限隔离。只有在稳定可靠的基础设施之上,AI 办公才能真正成为提高团队效率的工具,而不是新的运维负担。