前言
去年用feapder写了几个小爬虫,定时收集自己感兴趣的数据,运行的挺稳定的。最近又添加了几个新的,同时发现原先写的有几个早就失效了,一直没有发现。于是花时间折腾一下官方的 feaplat爬虫管理系统,新版本好像可以免费20个采集任务,够自己用了。
部署
安装docker
# 配置 docker swarm
docker swarm init
## 有多块网卡的话
docker swarm init --advertise-addr 172.17.0.10
docker-compose.yaml
version: "3.5"
x-logging: &default-logging
options:
max-size: "100m"
max-file: "1"
driver: json-file
services:
feapder_front:
container_name: feapder_front
image: ${FRONT_IMAGE}
restart: always
environment:
- BACKEND_URL=http://feapder_backend:${BACKEND_PORT}
- FRONT_PORT=${FRONT_PORT}
ports:
- ${FRONT_PORT}:${FRONT_PORT} # 前端端口 (自定义端口:80)
depends_on:
- feapder_backend
logging: *default-logging
feapder_backend:
container_name: feapder_backend
image: ${BACKEND_IMAGE}
restart: always
command: /wait-for-it.sh 172.17.0.10:3306 -t 60 --strict -- uvicorn main:app --host 0.0.0.0 --workers ${BACKEND_WORKER} --port ${BACKEND_PORT} # workers 为后端服务的个数,爬虫多可改大点
ports:
- ${BACKEND_PORT}:${BACKEND_PORT} # 后端端口 (自定义端口:8000)
environment:
- FEAPDER_BACKEND_URL=http://${BACKEND_HOST}:${BACKEND_PORT}
- AUTHORIZATION_CODE=${AUTHORIZATION_CODE} # 授权码
- DB_URL=mysql+pymysql://fpuser:fpuserxxx@172.17.0.10:3306/feapder_platform?charset=utf8mb4 # 后端数据库配置
- REDIS_DB_URL=redis://:@172.17.0.10:6379/0 # redis数据库连接配置 redis://[[username]:[password]]@[host]:[port]/[db]
- ACCESS_TOKEN_EXPIRE_MINUTES=1440 # 管理系统账号cookie过期时间 单位分钟
- SPIDER_IMAGE=${SPIDER_IMAGE} # 爬虫镜像
- SPIDER_AUTO_PULL_IMAGE=1 # 是否自动拉取镜像 否则需要在爬虫节点手动 docker pull 爬虫镜像,为了加快启动速度,可以设置0
- SPIDER_ENV={} # 爬虫环境变量 值为json类型
# 爬虫容器启动参数,支持的参数使用 docker service create --help 查看
- SPIDER_RUN_ARGS={"--network":"feaplat"}
# git ssh 私有密钥,不填则使用默认的
- GIT_SSH_PRIVATE_KEY=${GIT_SSH_PRIVATE_KEY}
# 监控配置
- INFLUXDB_HOST=${INFLUXDB_HOST}
- INFLUXDB_DB=${INFLUXDB_DB}
- INFLUXDB_ADMIN_USER=${INFLUXDB_ADMIN_USER}
- INFLUXDB_ADMIN_PASSWORD=${INFLUXDB_ADMIN_PASSWORD}
- INFLUXDB_PORT_TCP=8086
- INFLUXDB_PORT_UDP=8089
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "~/data/feapder/projects:/projects" # 上传的项目挂载, 本地目录:容器路径
depends_on:
- influxdb
logging: *default-logging
feapder:
container_name: feapder_worker
image: ${SPIDER_IMAGE}
influxdb:
restart: always
image: registry.cn-hangzhou.aliyuncs.com/feapderd/influxdb:1.8.6
container_name: feapder_influxdb
volumes:
- ~/data/feapder/influxdb:/var/lib/influxdb
- ./conf/influxdb.conf:/etc/influxdb/influxdb.conf
environment:
- INFLUXDB_DB=${INFLUXDB_DB}
- INFLUXDB_ADMIN_USER=${INFLUXDB_ADMIN_USER}
- INFLUXDB_ADMIN_PASSWORD=${INFLUXDB_ADMIN_PASSWORD}
- INFLUXDB_USER=influx
- INFLUXDB_USER_PASSWORD=influx
ports:
- ${INFLUXDB_PORT_TCP}:8086
- ${INFLUXDB_PORT_UDP}:8089/udp
logging: *default-logging
networks:
default:
name: feaplat
driver: overlay
attachable: true
.env
启动
docker-compose up -d
访问
http://ip:804
其他
数据表手动查询
# 查询所有任务
select * from feapder_task\G
## 修改任务自增id起始点,清理过期任务后
ALTER TABLE feapder_task AUTO_INCREMENT = 1;
## 修改任务id
update feapder_task set id = 2 where id =23;
手动启动爬虫
#启动
docker service create --name task_test --replicas 1 --workdir /task --mount type=bind,src=/opt/project/taskmonitor/myapp/spider/task,dst=/task registry.cn-hangzhou.aliyuncs.com/feapderd/feapder:2.3 tailf test.py
#查看
docker service ps pzsutx0dhpkmngrs7roarsa6r
#删除
docker service rm pzsutx0dhpkm
评论 (0)