ClawDBot 部署指南 - Windows 10
📖 文档概览
本文档详细指导在 Windows 10 系统上部署 ClawDBot 的完整过程,包括环境准备、Docker 配置、服务部署和故障排除。
一、系统要求与准备工作
1.1 硬件要求
-
操作系统:Windows 10 版本 2004(内部版本 19041)或更高
-
CPU:支持虚拟化技术(VT-x/AMD-V)
-
内存:至少 8GB RAM(推荐 16GB)
-
存储:至少 20GB 可用空间
-
架构:64位系统
1.2 软件要求
-
WSL 2(Windows Subsystem for Linux 2)
-
Docker Desktop for Windows
-
Ubuntu(或其他 Linux 发行版)
1.3 检查当前系统
powershell
# 以管理员身份打开 PowerShell,检查系统版本
winver
# 或
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
二、WSL 2 安装与配置
2.1 启用必要功能
powershell
# 1. 启用 WSL 功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 2. 启用虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 3. 重启计算机
Restart-Computer
2.2 安装 WSL 2 内核更新
-
下载地址:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
-
双击运行安装包
-
按照向导完成安装
2.3 设置 WSL 2 为默认版本
powershell
# 重启后以管理员身份打开 PowerShell
wsl --set-default-version 2
2.4 安装 Linux 发行版(推荐 Ubuntu)
powershell
# 方法一:命令行安装
wsl --install -d Ubuntu
# 方法二:从 Microsoft Store 安装
# 1. 打开 Microsoft Store
# 2. 搜索 "Ubuntu"
# 3. 选择 "Ubuntu 22.04 LTS" 或最新版本
# 4. 点击 "获取" 安装
2.5 初始化 Ubuntu
-
从开始菜单打开 "Ubuntu"
-
等待初始化完成
-
设置用户名和密码(建议使用简单的密码,如
ubuntu123)
三、Docker Desktop 安装
3.1 下载 Docker Desktop
3.2 安装步骤
-
双击下载的安装程序
-
在安装向导中勾选以下选项:
-
✅ Add shortcut to desktop(添加桌面快捷方式)
-
✅ Use WSL 2 instead of Hyper-V(重要!使用 WSL 2 而不是 Hyper-V)
-
✅ Enable Windows containers for Docker Desktop(可选)
-
-
点击 "Install" 开始安装
-
安装完成后重启计算机
3.3 首次配置 Docker Desktop
-
启动 Docker Desktop
-
接受服务条款
-
等待 Docker 启动完成(约 1-2 分钟)
3.4 配置 WSL 2 集成
-
点击 Docker Desktop 系统托盘图标
-
选择 "Settings"(设置)
-
导航到 "Resources" → "WSL Integration"
-
启用你安装的 Ubuntu 发行版
-
点击 "Apply & Restart"
3.5 配置资源分配(可选但推荐)
text
设置 → Resources → Advanced
- CPUs: 4-6(根据 CPU 核心数)
- Memory: 6-8 GB(不要超过总内存的 70%)
- Swap: 1 GB
- Disk image size: 64 GB(默认值通常足够)
四、ClawDBot 项目准备
4.1 创建项目目录结构
方案一:在 WSL Ubuntu 中创建(推荐)
bash
# 1. 打开 Ubuntu 终端
# 在开始菜单搜索 "Ubuntu" 并打开
# 2. 创建项目目录
mkdir -p ~/projects/clawdbot
cd ~/projects/clawdbot
# 3. 创建必要的子目录
mkdir -p config data logs backups
# 4. 验证目录结构
ls -la
方案二:在 Windows 中创建
powershell
# 在 PowerShell 中执行
New-Item -ItemType Directory -Force -Path "clawdbot\config", "clawdbot\data", "clawdbot\logs", "clawdbot\backups"
# 或手动创建
# 在 C:\Users\你的用户名\ 下创建 clawdbot 文件夹
# 在 clawdbot 文件夹中创建 config, data, logs, backups 子文件夹
4.2 目录结构说明
text
clawdbot/
├── config/ # 配置文件目录
├── data/ # 应用数据目录
├── logs/ # 日志文件目录
└── backups/ # 备份文件目录
五、Docker 配置文件创建
5.1 创建 docker-compose.yml
在项目根目录创建 docker-compose.yml 文件:
yaml
# docker-compose.yml - ClawDBot 基础部署配置
version: '3.8'
# 定义公共网络
networks:
clawdbot-network:
driver: bridge
# 定义持久化存储卷
volumes:
postgres-data:
name: clawdbot-postgres-data
redis-data:
name: clawdbot-redis-data
# 服务定义
services:
# PostgreSQL 数据库服务
postgres:
image: postgres:15-alpine
container_name: clawdbot-postgres
restart: unless-stopped
environment:
POSTGRES_DB: clawdbot
POSTGRES_USER: clawdbot_admin
POSTGRES_PASSWORD: ChangeMe123!
TZ: Asia/Shanghai
volumes:
- postgres-data:/var/lib/postgresql/data
- ./backups:/backups
ports:
- "5432:5432"
networks:
- clawdbot-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U clawdbot_admin"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
# Redis 缓存服务
redis:
image: redis:7-alpine
container_name: clawdbot-redis
restart: unless-stopped
command: redis-server --appendonly yes --requirepass RedisPass123!
volumes:
- redis-data:/data
ports:
- "6379:6379"
networks:
- clawdbot-network
healthcheck:
test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
interval: 30s
timeout: 10s
retries: 3
# ClawDBot 应用服务
clawdbot:
image: python:3.11-slim
container_name: clawdbot-app
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
environment:
# 数据库配置
DB_HOST: postgres
DB_PORT: 5432
DB_NAME: clawdbot
DB_USER: clawdbot_admin
DB_PASSWORD: ChangeMe123!
# Redis 配置
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_PASSWORD: RedisPass123!
# 应用配置
SECRET_KEY: django-insecure-your-secret-key-change-in-production
DEBUG: "true"
ALLOWED_HOSTS: localhost,127.0.0.1
# 时区配置
TZ: Asia/Shanghai
volumes:
- ./data:/app/data
- ./logs:/app/logs
ports:
- "8000:8000"
networks:
- clawdbot-network
command: >
sh -c "
echo '安装必要的Python包...' &&
pip install django==4.2 gunicorn psycopg2-binary redis &&
echo '等待数据库就绪...' &&
sleep 15 &&
echo '创建Django测试项目...' &&
django-admin startproject testproject . &&
echo '启动开发服务器...' &&
python manage.py runserver 0.0.0.0:8000
"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
5.2 创建环境变量文件(可选)
创建 .env 文件来管理敏感信息:
env
# .env - 环境变量配置
# 数据库配置
DB_PASSWORD=StrongPassword123!
POSTGRES_DB=clawdbot
POSTGRES_USER=clawdbot_admin
# Redis配置
REDIS_PASSWORD=RedisPass456!
# 应用配置
SECRET_KEY=django-insecure-$(openssl rand -base64 32)
DEBUG=true
ALLOWED_HOSTS=localhost,127.0.0.1
# 时区
TZ=Asia/Shanghai
注意:将敏感信息硬编码在配置文件中仅用于测试环境,生产环境请使用更安全的方式。
六、部署与启动服务
6.1 启动 ClawDBot 服务
bash
# 在项目目录中执行(WSL Ubuntu 或 PowerShell)
docker-compose up -d
6.2 查看服务状态
bash
# 查看所有容器状态
docker-compose ps
# 预期输出示例:
# NAME COMMAND SERVICE STATUS PORTS
# clawdbot-app "sh -c 'echo '安装必…" clawdbot running 0.0.0.0:8000->8000/tcp
# clawdbot-postgres "docker-entrypoint.s…" postgres running 0.0.0.0:5432->5432/tcp
# clawdbot-redis "docker-entrypoint.s…" redis running 0.0.0.0:6379->6379/tcp
6.3 查看服务日志
bash
# 查看所有服务的日志
docker-compose logs
# 只看应用服务日志
docker-compose logs clawdbot
# 实时跟踪日志(按 Ctrl+C 退出)
docker-compose logs -f
# 查看最后 50 行日志
docker-compose logs --tail=50
6.4 验证服务运行
bash
# 方法一:使用 curl 测试
curl -I http://localhost:8000
# 方法二:在浏览器中访问
# 打开浏览器,访问 http://localhost:8000
# 方法三:测试数据库连接
docker exec clawdbot-postgres pg_isready -U clawdbot_admin
# 方法四:测试 Redis 连接
docker exec clawdbot-redis redis-cli -a RedisPass123! ping
七、管理命令参考
7.1 Docker Compose 常用命令
bash
# 启动服务(后台模式)
docker-compose up -d
# 停止服务
docker-compose stop
# 停止并删除容器
docker-compose down
# 停止并删除容器、网络、卷
docker-compose down -v
# 重启特定服务
docker-compose restart clawdbot
# 重新构建并启动服务
docker-compose up -d --build
# 查看服务状态
docker-compose ps
# 查看服务资源使用
docker-compose top
7.2 Docker 常用命令
bash
# 查看所有容器
docker ps -a
# 查看运行中的容器
docker ps
# 查看容器资源使用
docker stats
# 查看容器日志
docker logs clawdbot-app
# 进入容器内部
docker exec -it clawdbot-app bash
docker exec -it clawdbot-postgres psql -U clawdbot_admin
# 查看镜像
docker images
# 清理无用资源
docker system prune -a
7.3 服务特定操作
bash
# 备份数据库
docker exec clawdbot-postgres pg_dump -U clawdbot_admin clawdbot > backup_$(date +%Y%m%d).sql
# 恢复数据库
cat backup.sql | docker exec -i clawdbot-postgres psql -U clawdbot_admin clawdbot
# 查看数据库大小
docker exec clawdbot-postgres psql -U clawdbot_admin -d clawdbot -c "SELECT pg_size_pretty(pg_database_size('clawdbot'));"
# 清理 Redis 缓存
docker exec clawdbot-redis redis-cli -a RedisPass123! FLUSHALL
八、故障排除与常见问题
8.1 端口冲突问题
powershell
# 查看端口占用情况
netstat -ano | findstr :8000
netstat -ano | findstr :5432
netstat -ano | findstr :6379
# 解决方法1:杀死占用进程
taskkill /PID <进程号> /F
# 解决方法2:修改 docker-compose.yml 中的端口映射
# 例如将 8000:8000 改为 8001:8000
8.2 WSL 2 网络问题
powershell
# 重置 WSL 2
wsl --shutdown
# 重启 Docker Desktop
# 等待 30 秒后重新启动
# 检查 WSL 2 IP 地址
wsl hostname -I
8.3 Docker 启动失败
powershell
# 1. 检查 Docker Desktop 是否运行
# 查看系统托盘中的 Docker 图标
# 2. 重置 Docker Desktop
# Docker Desktop → Troubleshoot → Reset to factory defaults
# 3. 重启 WSL 2
wsl --shutdown
8.4 文件权限问题
bash
# 在 WSL 中修复权限
sudo chown -R 1000:1000 ./data ./logs
# 或在 docker-compose.yml 中指定用户
clawdbot:
user: "1000:1000" # 使用当前用户 ID
8.5 性能优化建议
powershell
# 1. 将 Docker 数据目录移动到 SSD
# Docker Desktop → Settings → Resources → Advanced
# 修改 Disk image location
# 2. 禁用 Windows Defender 实时保护(临时)
# 设置 → 更新和安全 → Windows 安全中心 → 病毒和威胁防护 → 管理设置
# 3. 添加排除项
# 将 Docker 相关目录添加到 Windows Defender 排除列表
8.6 常见错误代码及解决
| 错误代码 | 可能原因 | 解决方案 |
|---|---|---|
Error response from daemon |
Docker 服务未启动 | 启动 Docker Desktop |
Port is already allocated |
端口被占用 | 修改端口或杀死占用进程 |
Cannot connect to the Docker daemon |
Docker 服务问题 | 重启 Docker Desktop |
WSL 2 installation is incomplete |
WSL 2 未完全安装 | 重新安装 WSL 2 内核更新 |
九、生产环境配置
9.1 安全加固配置
yaml
# docker-compose.prod.yml - 生产环境配置
version: '3.8'
services:
postgres:
image: postgres:15-alpine
environment:
POSTGRES_PASSWORD_FILE: /run/secrets/db_password
secrets:
- db_password
volumes:
- postgres-data:/var/lib/postgresql/data
networks:
- clawdbot-network
clawdbot:
build: .
environment:
DEBUG: "false"
SECRET_KEY_FILE: /run/secrets/secret_key
DB_PASSWORD_FILE: /run/secrets/db_password
secrets:
- secret_key
- db_password
ports:
- "80:8000"
networks:
- clawdbot-network
secrets:
db_password:
file: ./secrets/db_password.txt
secret_key:
file: ./secrets/secret_key.txt
volumes:
postgres-data:
networks:
clawdbot-network:
driver: bridge
9.2 创建 Dockerfile
dockerfile
FROM python:3.11-slim as builder
WORKDIR /app
# 安装系统依赖
RUN apt-get update && apt-get install -y \
gcc \
g++ \
libpq-dev \
&& rm -rf /var/lib/apt/lists/*
# 复制依赖文件
COPY requirements.txt .
# 安装 Python 依赖
RUN pip install --no-cache-dir -r requirements.txt
# 运行阶段
FROM python:3.11-slim
WORKDIR /app
# 创建非 root 用户
RUN addgroup --system app && adduser --system --ingroup app appuser
# 从构建阶段复制依赖
COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
COPY --from=builder /usr/local/bin /usr/local/bin
# 复制应用代码
COPY . .
# 设置权限
RUN chown -R appuser:app /app
USER appuser
# 暴露端口
EXPOSE 8000
# 健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
CMD curl -f http://localhost:8000/health/ || exit 1
# 启动命令
CMD ["gunicorn", "--bind", "0.0.0.0:8000", \
"--workers", "4", \
"--timeout", "120", \
"--access-logfile", "-", \
"--error-logfile", "-", \
"clawdbot.wsgi:application"]
9.3 创建 requirements.txt
txt
Django==4.2
gunicorn==21.2.0
psycopg2-binary==2.9.7
redis==5.0.1
celery==5.3.1
django-cors-headers==4.2.0
django-rest-framework==0.1.0
drf-yasg==1.21.7
十、备份与恢复
10.1 备份脚本
bash
#!/bin/bash
# backup.sh - 备份脚本
BACKUP_DIR="./backups"
DATE=$(date +%Y%m%d_%H%M%S)
echo "开始备份 ClawDBot..."
# 1. 备份数据库
echo "备份数据库..."
docker exec clawdbot-postgres pg_dump -U clawdbot_admin clawdbot > \
"${BACKUP_DIR}/clawdbot_db_${DATE}.sql"
# 2. 备份配置文件
echo "备份配置文件..."
tar -czf "${BACKUP_DIR}/clawdbot_config_${DATE}.tar.gz" \
docker-compose.yml .env config/ 2>/dev/null || true
# 3. 备份重要数据
echo "备份应用数据..."
tar -czf "${BACKUP_DIR}/clawdbot_data_${DATE}.tar.gz" \
data/ logs/ 2>/dev/null || true
# 4. 删除7天前的备份
find "${BACKUP_DIR}" -name "*.sql" -mtime +7 -delete
find "${BACKUP_DIR}" -name "*.tar.gz" -mtime +7 -delete
echo "备份完成!文件保存在: ${BACKUP_DIR}/"
10.2 恢复脚本
bash
#!/bin/bash
# restore.sh - 恢复脚本
if [ -z "$1" ]; then
echo "请指定备份文件: ./restore.sh backup_20240101.sql"
exit 1
fi
echo "开始恢复 ClawDBot..."
# 1. 停止服务
docker-compose down
# 2. 恢复数据库
echo "恢复数据库..."
cat "$1" | docker exec -i clawdbot-postgres psql -U clawdbot_admin clawdbot
# 3. 启动服务
docker-compose up -d
echo "恢复完成!"
十一、监控与维护
11.1 健康检查脚本
bash
#!/bin/bash
# health-check.sh - 健康检查脚本
echo "=== ClawDBot 健康检查 ==="
echo "检查时间: $(date)"
echo -e "\n1. Docker 服务状态:"
docker info > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "✅ Docker 服务运行正常"
else
echo "❌ Docker 服务异常"
fi
echo -e "\n2. 容器运行状态:"
docker-compose ps
echo -e "\n3. 服务健康状态:"
curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/ 2>/dev/null
STATUS=$?
if [ $STATUS -eq 0 ]; then
echo "✅ 应用服务可访问"
else
echo "❌ 应用服务不可访问"
fi
echo -e "\n4. 数据库连接:"
docker exec clawdbot-postgres pg_isready -U clawdbot_admin > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "✅ 数据库连接正常"
else
echo "❌ 数据库连接异常"
fi
echo -e "\n5. Redis 连接:"
docker exec clawdbot-redis redis-cli -a RedisPass123! ping > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "✅ Redis 连接正常"
else
echo "❌ Redis 连接异常"
fi
echo -e "\n6. 系统资源使用:"
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
echo -e "\n检查完成!"
11.2 日志轮转配置
bash
# 在宿主机上配置日志轮转
# 创建日志轮转配置
cat > /etc/logrotate.d/clawdbot << EOF
/var/lib/docker/containers/*/*.log {
daily
rotate 7
compress
delaycompress
missingok
copytruncate
}
EOF
十二、附录
12.1 常用端口说明
| 端口 | 服务 | 用途 | 访问方式 |
|---|---|---|---|
| 8000 | ClawDBot | 应用服务 | http://localhost:8000 |
| 5432 | PostgreSQL | 数据库 | psql -h localhost -p 5432 |
| 6379 | Redis | 缓存 | redis-cli -h localhost -p 6379 |
12.2 默认凭据
-
PostgreSQL:
-
用户名:
clawdbot_admin -
密码:
ChangeMe123! -
数据库:
clawdbot
-
-
Redis:
- 密码:
RedisPass123!
- 密码:
12.3 文件位置参考
| 文件/目录 | Windows 位置 | WSL Ubuntu 位置 |
|---|---|---|
| 项目目录 | C:\Users\<用户名>\clawdbot |
/home/<用户名>/projects/clawdbot |
| Docker 数据 | C:\Users\<用户名>\.docker |
/home/<用户名>/.docker |
| WSL 文件 | \\wsl$\Ubuntu\home\<用户名>\ |
/home/<用户名>/ |
12.4 联系方式与支持
-
问题反馈:记录错误信息、复现步骤
-
日志收集 :使用
docker-compose logs > error.log收集日志 -
社区支持:访问项目 GitHub Issues
📌 重要提醒
-
安全警告:本文档中的默认密码仅用于测试环境,生产环境必须修改
-
备份策略:定期备份数据库和配置文件
-
更新策略:定期更新 Docker 镜像和系统依赖
-
监控建议:生产环境建议配置监控和告警
文档版本 :v1.0
最后更新 :2024年1月
适用系统 :Windows 10/11
部署方式:Docker + WSL 2