使用 Docker 部署 CoPaw - 从源码构建到生产环境完整教程
前言
CoPaw 是一款强大的 AI 智能助手,可以帮助你完成各种自动化任务。本文详细介绍如何使用 Docker 快速部署 CoPaw,包括基础安装、配置优化、数据持久化、反向代理等完整方案,让你 10 分钟内搭建自己的 AI 助手。
一、CoPaw 简介
1.1 什么是 CoPaw?
CoPaw 是一个基于大语言模型的智能助手平台,支持:
- 🤖 多模型接入(OpenAI、Claude、通义千问等)
- 🔧 丰富的技能扩展(邮件、日历、文件处理等)
- 🌐 多渠道集成(钉钉、飞书、微信等)
- 📊 可视化操作界面
- 🔒 本地化部署,数据安全
1.2 系统要求
| 配置项 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 2 核 | 4 核+ |
| 内存 | 4GB | 8GB+ |
| 磁盘 | 10GB | 50GB+ SSD |
| Docker | 20.10+ | 24.0+ |
| 网络 | 可访问外网 | 稳定宽带 |
二、安装 Docker 环境
2.1 Ubuntu/Debian 安装
# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
# 更新包索引
sudo apt-get update
# 安装依赖
sudo apt-get install -y \
ca-certificates \
curl \
gnupg \
lsb-release
# 添加 Docker GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 设置稳定版仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# 验证安装
docker --version
docker run hello-world
2.2 CentOS/RHEL 安装
# 卸载旧版本
sudo yum remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 安装 yum 工具
sudo yum install -y yum-utils
# 添加 Docker 仓库
sudo yum-config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker Engine
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动 Docker
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装
docker --version
2.3 配置 Docker 用户权限
# 创建 docker 用户组
sudo groupadd docker
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
# 重新加载组配置
newgrp docker
# 验证(不需要 sudo)
docker run hello-world
2.4 安装 Docker Compose
# 下载 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version
# 或者使用新版 docker compose 命令
docker compose version
三、获取 CoPaw Docker 镜像
3.1 从 Docker Hub 拉取
# 拉取最新版镜像
docker pull copaw/copaw:latest
# 或者拉取指定版本
docker pull copaw/copaw:v1.0.0
# 查看镜像
docker images | grep copaw
3.2 从国内镜像源加速
# 配置 Docker 镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]
}
EOF
# 重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
# 再次拉取镜像
docker pull copaw/copaw:latest
三、从源码构建 Docker 镜像(重要)
注意:CoPaw 目前未提供官方 Docker 镜像,需要从源码自行构建。以下是完整构建流程。
3.1 获取 CoPaw 源码
# 方式一:从 GitHub 克隆(推荐)
git clone https://github.com/agentscope-ai/CoPaw.git
cd copaw
# 方式二:下载源码包
wget https://github.com/agentscope-ai/CoPaw/archive/refs/heads/main.zip
unzip main.zip
cd copaw-main
3.2 查看项目结构
copaw/
├── Dockerfile # Docker 构建文件
├── docker-compose.yml # Docker Compose 配置
├── requirements.txt # Python 依赖
├── setup.py # 安装脚本
├── copaw/ # 主程序目录
│ ├── __init__.py
│ ├── main.py # 入口文件
│ ├── config/ # 配置文件
│ ├── skills/ # 技能模块
│ └── utils/ # 工具函数
├── config/ # 用户配置目录
│ └── config.yaml
└── scripts/ # 辅助脚本
3.3 创建 Dockerfile
如果项目中没有 Dockerfile,可以自行创建:
# 基础镜像
FROM python:3.11-slim
# 设置工作目录
WORKDIR /app
# 设置环境变量
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1 \
PIP_DISABLE_PIP_VERSION_CHECK=1
# 安装系统依赖
RUN apt-get update && apt-get install -y \
curl \
git \
build-essential \
libpq-dev \
&& rm -rf /var/lib/apt/lists/*
# 复制依赖文件
COPY requirements.txt .
# 安装 Python 依赖
RUN pip install --no-cache-dir -r requirements.txt
# 复制项目文件
COPY . .
# 安装 CoPaw
RUN pip install -e .
# 创建数据目录
RUN mkdir -p /app/data /app/logs /app/config /app/skills
# 暴露端口
EXPOSE 8080
# 健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
CMD curl -f http://localhost:8080/health || exit 1
# 启动命令
CMD ["copaw", "app"]
3.4 创建 requirements.txt
如果项目中没有 requirements.txt,创建基础依赖:
# CoPaw 核心依赖
fastapi>=0.104.0
uvicorn[standard]>=0.24.0
pydantic>=2.0.0
pyyaml>=6.0
requests>=2.31.0
aiohttp>=3.9.0
# 数据库支持
psycopg2-binary>=2.9.0
sqlalchemy>=2.0.0
alembic>=1.12.0
# Redis 支持
redis>=5.0.0
# AI 模型 SDK
openai>=1.3.0
anthropic>=0.7.0
dashscope>=1.13.0
# 工具库
python-dotenv>=1.0.0
click>=8.1.0
rich>=13.0.0
playwright>=1.40.0
# 监控和日志
prometheus-client>=0.19.0
python-json-logger>=2.0.0
3.5 构建 Docker 镜像
# 进入项目目录
cd copaw
# 构建镜像
docker build -t copaw:latest .
# 查看构建的镜像
docker images | grep copaw
# 输出示例:
# copaw latest abc123def456 2 minutes ago 1.2GB
3.6 测试镜像
# 运行测试容器
docker run -d \
--name copaw-test \
-p 8080:8080 \
copaw:latest
# 查看日志
docker logs -f copaw-test
# 测试健康检查
curl http://localhost:8080/health
# 停止测试容器
docker stop copaw-test
docker rm copaw-test
3.7 推送到私有仓库(可选)
# 登录 Docker Hub
docker login
# 标记镜像
docker tag copaw:latest your-username/copaw:latest
# 推送镜像
docker push your-username/copaw:latest
# 或者推送到私有仓库
docker tag copaw:latest registry.example.com/copaw:latest
docker push registry.example.com/copaw:latest
四、获取 CoPaw Docker 镜像(备选方案)
如果你不想自己构建,可以使用以下备选方案:
4.1 使用社区维护的镜像
# 查看 Docker Hub 上的社区镜像
# 访问:https://hub.docker.com/search?q=copaw
# 拉取社区镜像(如果有的话)
docker pull some-user/copaw:latest
# 注意:使用社区镜像前请确认安全性和更新及时性
4.2 直接安装(不使用 Docker)
# 创建虚拟环境
python3 -m venv copaw-env
source copaw-env/bin/activate
# 克隆项目
git clone https://github.com/agentscope-ai/CoPaw.git
cd copaw
# 安装依赖
pip install -r requirements.txt
# 安装 CoPaw
pip install -e .
# 启动 CoPaw
copaw start --host 0.0.0.0 --port 8080
四、基础部署方案
4.1 快速启动(单容器)
# 创建数据目录
mkdir -p ~/copaw/data
mkdir -p ~/copaw/logs
mkdir -p ~/copaw/config
# 启动容器
docker run -d \
--name copaw \
--restart unless-stopped \
-p 8080:8080 \
-v ~/copaw/data:/app/data \
-v ~/copaw/logs:/app/logs \
-v ~/copaw/config:/app/config \
-e COPAW_PORT=8080 \
-e COPAW_ENV=production \
copaw/copaw:latest
# 查看日志
docker logs -f copaw
# 查看容器状态
docker ps | grep copaw
4.2 使用 Docker Compose 部署(推荐)
创建 docker-compose.yml 文件:
version: '3.8'
services:
copaw:
image: copaw/copaw:latest
container_name: copaw
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ./data:/app/data
- ./logs:/app/logs
- ./config:/app/config
environment:
- COPAW_PORT=8080
- COPAW_ENV=production
- COPAW_LOG_LEVEL=INFO
- TZ=Asia/Shanghai
networks:
- copaw-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
copaw-network:
driver: bridge
启动服务:
# 创建目录
mkdir -p copaw && cd copaw
# 创建 docker-compose.yml(内容如上)
# 启动服务
docker-compose up -d
# 查看状态
docker-compose ps
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
# 重启服务
docker-compose restart
五、完整生产环境部署
5.1 完整 Docker Compose 配置
生产环境推荐使用以下完整配置,包含 Redis 缓存和 PostgreSQL 数据库:
version: '3.8'
services:
# CoPaw 主服务
copaw:
image: copaw/copaw:latest
container_name: copaw
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ./data:/app/data
- ./logs:/app/logs
- ./config:/app/config
- ./skills:/app/skills
environment:
- COPAW_PORT=8080
- COPAW_ENV=production
- COPAW_LOG_LEVEL=INFO
- COPAW_SECRET_KEY=your-secret-key-change-this
- DATABASE_URL=postgresql://copaw:copaw123@postgres:5432/copaw
- REDIS_URL=redis://:redis123@redis:6379/0
- TZ=Asia/Shanghai
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
networks:
- copaw-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
# PostgreSQL 数据库
postgres:
image: postgres:15-alpine
container_name: copaw-postgres
restart: unless-stopped
volumes:
- ./postgres/data:/var/lib/postgresql/data
- ./postgres/init:/docker-entrypoint-initdb.d
environment:
- POSTGRES_USER=copaw
- POSTGRES_PASSWORD=copaw123
- POSTGRES_DB=copaw
- TZ=Asia/Shanghai
networks:
- copaw-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U copaw"]
interval: 10s
timeout: 5s
retries: 5
# Redis 缓存
redis:
image: redis:7-alpine
container_name: copaw-redis
restart: unless-stopped
command: redis-server --requirepass redis123
volumes:
- ./redis/data:/data
networks:
- copaw-network
healthcheck:
test: ["CMD", "redis-cli", "--pass", "redis123", "ping"]
interval: 10s
timeout: 5s
retries: 5
networks:
copaw-network:
driver: bridge
5.2 启动完整服务
# 创建目录结构
mkdir -p copaw/{data,logs,config,skills}
mkdir -p copaw/postgres/{data,init}
mkdir -p copaw/redis/data
# 进入目录
cd copaw
# 创建 docker-compose.yml(内容如上)
# 启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看 CoPaw 日志
docker-compose logs -f copaw
# 查看数据库日志
docker-compose logs -f postgres
六、配置 CoPaw
6.1 访问 Web 界面
浏览器访问:http://your-server-ip:8080
首次访问需要设置管理员账号。
6.2 配置文件说明
CoPaw 配置文件位于 ./config/config.yaml:
# CoPaw 配置文件
# ./config/config.yaml
# 服务配置
server:
port: 8080
host: 0.0.0.0
debug: false
# 数据库配置
database:
type: postgresql
host: postgres
port: 5432
name: copaw
user: copaw
password: copaw123
# Redis 配置
redis:
host: redis
port: 6379
password: redis123
db: 0
# AI 模型配置
llm:
provider: openai # 或 claude, qwen, deepseek 等
api_key: your-api-key
model: gpt-4
base_url: https://api.openai.com/v1
temperature: 0.7
max_tokens: 4096
# 日志配置
logging:
level: INFO
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
file: /app/logs/copaw.log
# 技能配置
skills:
enabled:
- browser_use
- execute_shell_command
- read_file
- write_file
browser:
headless: true
timeout: 60
6.3 配置 AI 模型
OpenAI 配置
llm:
provider: openai
api_key: sk-your-openai-api-key
model: gpt-4
base_url: https://api.openai.com/v1
Claude 配置
llm:
provider: claude
api_key: your-anthropic-api-key
model: claude-3-opus-20240229
base_url: https://api.anthropic.com
通义千问配置
llm:
provider: qwen
api_key: your-dashscope-api-key
model: qwen-max
base_url: https://dashscope.aliyuncs.com/api/v1
DeepSeek 配置
llm:
provider: deepseek
api_key: your-deepseek-api-key
model: deepseek-chat
base_url: https://api.deepseek.com
七、Nginx 反向代理
7.1 安装 Nginx
# Ubuntu/Debian
sudo apt install nginx -y
# CentOS/RHEL
sudo yum install nginx -y
# 启动 Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
7.2 配置反向代理
创建 Nginx 配置文件 /etc/nginx/conf.d/copaw.conf:
server {
listen 80;
server_name copaw.example.com;
# 日志配置
access_log /var/log/nginx/copaw_access.log;
error_log /var/log/nginx/copaw_error.log;
# 客户端大小限制
client_max_body_size 100M;
location / {
proxy_pass http://localhost:8080;
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;
# WebSocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 超时设置
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}
7.3 配置 HTTPS(可选)
# 使用 Certbot 申请 Let's Encrypt 证书
sudo apt install certbot python3-certbot-nginx -y
# 申请证书
sudo certbot --nginx -d copaw.example.com
# 自动续期证书
sudo certbot renew --dry-run
7.4 验证配置
# 测试 Nginx 配置
sudo nginx -t
# 重载 Nginx
sudo systemctl reload nginx
# 查看状态
sudo systemctl status nginx
八、数据备份与恢复
8.1 备份数据
# 创建备份目录
mkdir -p ~/copaw-backup
# 停止服务
cd ~/copaw
docker-compose down
# 备份数据目录
tar -czvf ~/copaw-backup/data-$(date +%Y%m%d).tar.gz ./data
# 备份数据库
docker exec copaw-postgres pg_dump -U copaw copaw > ~/copaw-backup/db-$(date +%Y%m%d).sql
# 备份配置文件
cp -r ./config ~/copaw-backup/config-$(date +%Y%m%d)
# 启动服务
docker-compose up -d
# 查看备份
ls -lh ~/copaw-backup/
8.2 恢复数据
# 停止服务
cd ~/copaw
docker-compose down
# 恢复数据目录
tar -xzvf ~/copaw-backup/data-20240101.tar.gz -C ./
# 恢复数据库
docker exec -i copaw-postgres psql -U copaw copaw < ~/copaw-backup/db-20240101.sql
# 恢复配置
cp -r ~/copaw-backup/config-20240101/* ./config/
# 启动服务
docker-compose up -d
8.3 定时备份脚本
#!/bin/bash
# backup-copaw.sh
BACKUP_DIR=~/copaw-backup
DATE=$(date +%Y%m%d_%H%M%S)
COPAW_DIR=~/copaw
mkdir -p $BACKUP_DIR
# 备份数据
tar -czvf $BACKUP_DIR/data-$DATE.tar.gz -C $COPAW_DIR data
# 备份数据库
docker exec copaw-postgres pg_dump -U copaw copaw > $BACKUP_DIR/db-$DATE.sql
# 删除 7 天前的备份
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
find $BACKUP_DIR -name "*.sql" -mtime +7 -delete
echo "Backup completed: $DATE"
添加到 crontab:
# 每天凌晨 2 点备份
crontab -e
# 添加以下内容
0 2 * * * /bin/bash /path/to/backup-copaw.sh >> /var/log/copaw-backup.log 2>&1
九、监控与维护
9.1 查看容器状态
# 查看所有容器
docker ps -a
# 查看 CoPaw 容器
docker ps | grep copaw
# 查看资源使用
docker stats copaw
9.2 查看日志
# 实时查看日志
docker-compose logs -f copaw
# 查看最近 100 行
docker-compose logs --tail=100 copaw
# 导出日志
docker-compose logs copaw > copaw.log
9.3 更新 CoPaw
# 拉取最新镜像
docker pull copaw/copaw:latest
# 停止服务
docker-compose down
# 重启服务(使用新镜像)
docker-compose up -d
# 验证版本
docker exec copaw copaw --version
9.4 清理无用资源
# 删除停止的容器
docker container prune
# 删除悬空镜像
docker image prune
# 删除所有未使用镜像
docker image prune -a
# 查看磁盘使用
docker system df
十、常见问题排查
10.1 容器无法启动
# 查看容器日志
docker logs copaw
# 检查端口占用
netstat -tlnp | grep 8080
# 检查配置文件
cat ./config/config.yaml
# 重新创建容器
docker-compose down
docker-compose up -d
10.2 数据库连接失败
# 检查数据库容器
docker-compose ps postgres
# 测试数据库连接
docker exec -it copaw-postgres psql -U copaw -d copaw
# 查看数据库日志
docker-compose logs postgres
10.3 内存不足
# 查看内存使用
free -h
docker stats
# 限制容器内存(docker-compose.yml)
# 添加以下配置:
# deploy:
# resources:
# limits:
# memory: 2G
# reservations:
# memory: 1G
10.4 网络问题
# 检查网络
docker network ls
docker network inspect copaw-network
# 测试容器间通信
docker exec copaw ping postgres
docker exec copaw ping redis
# 重启网络
docker-compose down
docker network prune
docker-compose up -d
总结
本文详细介绍了使用 Docker 部署 CoPaw 的完整流程:
- Docker 安装:Ubuntu/CentOS 安装教程
- 镜像获取:Docker Hub 拉取和国内加速
- 基础部署:单容器快速启动
- 生产部署:包含 PostgreSQL + Redis 的完整方案
- 配置说明:AI 模型、技能、日志等配置
- 反向代理:Nginx 配置和 HTTPS 加密
- 数据备份:定时备份和恢复方案
- 监控维护:日志查看、更新升级、资源清理
- 故障排查:常见问题解决方案
通过 Docker 部署 CoPaw,你可以:
- ✅ 快速搭建,10 分钟完成部署
- ✅ 环境隔离,不影响系统其他服务
- ✅ 易于备份,数据持久化存储
- ✅ 方便升级,一键更新镜像
- ✅ 资源可控,限制 CPU/内存使用
现在就开始部署你的 CoPaw AI 助手吧!如有问题,欢迎留言讨论!🚀
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。







