Docker deployment
Using docker to run AnyCrawl
前置要求
在开始之前,请确保您的系统已安装以下软件:
- Docker: 版本 20.10 或更高
- Docker Compose: 版本 2.0 或更高
安装 Docker 和 Docker Compose
macOS
# 使用 Homebrew 安装
brew install docker docker-compose
# 或者下载 Docker Desktop
# https://www.docker.com/products/docker-desktopUbuntu/Debian
# 安装 Docker
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin快速开始
1. 克隆项目
git clone https://github.com/any4ai/AnyCrawl.git
cd AnyCrawl2. 启动服务
# 构建并启动所有服务
docker compose up --build
# 或者在后台运行
docker compose up --build -d3. 验证部署
# 检查服务状态
docker compose ps
# 测试 API 是否正常运行
curl http://localhost:8080/health服务架构
AnyCrawl 采用微服务架构,包含以下服务:
核心服务
| 服务名称 | 描述 | 端口 | 依赖 |
|---|---|---|---|
api | API 网关和主要服务接口 | 8080 | redis |
scrape-puppeteer | Puppeteer 爬虫引擎 | - | redis |
scrape-playwright | Playwright 爬虫引擎 | - | redis |
scrape-cheerio | Cheerio 爬虫引擎(不支持 SPA) | - | redis |
redis | 消息队列和缓存 | 6379 | - |
环境变量配置
基础配置
| 变量名 | 描述 | 默认值 | 示例 |
|---|---|---|---|
NODE_ENV | 运行环境 | production | production, development |
ANYCRAWL_API_PORT | API 服务端口 | 8080 | 8080 |
爬虫配置
| 变量名 | 描述 | 默认值 | 示例 |
|---|---|---|---|
ANYCRAWL_HEADLESS | 是否使用无头模式 | true | true, false |
ANYCRAWL_PROXY_URL | 基础代理服务器地址 | - | http://proxy:8080 |
ANYCRAWL_PROXY_STEALTH_URL | 隐身代理服务器地址 | - | http://residential-proxy:8080 |
ANYCRAWL_PROXY_STEALTH_CREDITS | 使用隐身代理时额外消耗的积分 | 5 | 5 |
ANYCRAWL_STEALTH_TIMEOUT_MS | 隐身/auto 代理模式默认超时(毫秒) | 120000 | 120000 |
ANYCRAWL_IGNORE_SSL_ERROR | 忽略 SSL 错误 | true | true, false |
数据库配置
| 变量名 | 描述 | 默认值 |
|---|---|---|
ANYCRAWL_API_DB_TYPE | 数据库类型 | sqlite |
ANYCRAWL_API_DB_CONNECTION | 数据库连接路径 | /usr/src/app/db/database.db |
Redis 配置
| 变量名 | 描述 | 默认值 |
|---|---|---|
ANYCRAWL_REDIS_URL | Redis 连接地址 | redis://redis:6379 |
认证配置
| 变量名 | 描述 | 默认值 |
|---|---|---|
ANYCRAWL_API_AUTH_ENABLED | 是否启用 API 认证 | false |
自定义配置
创建环境配置文件
# 创建 .env 文件
cp .env.example .env示例 .env 文件
# 基础配置
NODE_ENV=production
ANYCRAWL_API_PORT=8080
# 爬虫配置
ANYCRAWL_HEADLESS=true
ANYCRAWL_PROXY_URL=
ANYCRAWL_PROXY_STEALTH_URL=
ANYCRAWL_PROXY_STEALTH_CREDITS=5
ANYCRAWL_STEALTH_TIMEOUT_MS=120000
ANYCRAWL_IGNORE_SSL_ERROR=true
# 数据库配置
ANYCRAWL_API_DB_TYPE=sqlite
ANYCRAWL_API_DB_CONNECTION=/usr/src/app/db/database.db
# Redis 配置
ANYCRAWL_REDIS_URL=redis://redis:6379
# 认证配置
ANYCRAWL_API_AUTH_ENABLED=false数据持久化
存储卷
AnyCrawl 使用以下卷来持久化数据:
volumes:
- ./storage:/usr/src/app/storage # 爬虫数据存储
- ./db:/usr/src/app/db # 数据库文件
- redis-data:/data # Redis 数据备份数据
# 备份数据库
docker compose exec api cp /usr/src/app/db/database.db /usr/src/app/storage/backup.db
# 备份 Redis 数据
docker compose exec redis redis-cli SAVE
docker compose cp redis:/data/dump.rdb ./backup/常用命令
服务管理
# 启动服务
docker compose up -d
# 停止服务
docker compose down
# 重启特定服务
docker compose restart api
# 查看服务日志
docker compose logs -f api
# 进入容器
docker compose exec api bash扩展服务
# 扩展爬虫服务实例
docker compose up -d --scale scrape-puppeteer=3
docker compose up -d --scale scrape-playwright=2监控命令
# 查看服务状态
docker compose ps
# 查看资源使用情况
docker stats
# 查看特定服务日志
docker compose logs -f --tail=100 api故障排除
常见问题
1. 端口冲突
# 检查端口占用
lsof -i :8080
# 修改端口映射
# 在 docker-compose.yml 中修改 ports 配置
ports:
- "8081:8080" # 将本地端口改为 80812. 内存不足
# 检查容器内存使用
docker stats
# 增加 Docker 可用内存(Docker Desktop)
# Docker Desktop -> Settings -> Resources -> Memory3. 数据库连接失败
# 检查数据库文件权限
ls -la ./db/
# 重新创建数据库卷
docker compose down -v
docker compose up --build4. Redis 连接失败
# 检查 Redis 服务状态
docker compose exec redis redis-cli ping
# 查看 Redis 日志
docker compose logs redis调试模式
启用调试模式进行问题排查:
# 设置环境变量启用调试
export NODE_ENV=development
export DEBUG=anycrawl:*
# 启动服务
docker compose up --build生产环境部署
安全配置
- 启用认证:
ANYCRAWL_API_AUTH_ENABLED=true启用认证后,需要添加 ApiKey 并在请求头中使用。
- 使用 HTTPS:
参考:
services:
nginx:
image: nginx:alpine
ports:
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./ssl:/etc/ssl/certs通过 nginx 做反向代理。
更新和维护
更新服务
# 拉取最新镜像
docker compose pull
# 重新构建并启动
docker compose up --build -d
# 清理旧镜像
docker image prune -f