添加各个节点的镜像制作

This commit is contained in:
陈景阳
2019-08-15 08:08:16 +08:00
parent 7586964406
commit 86b547803f
13 changed files with 127 additions and 1 deletions

View File

@@ -0,0 +1,24 @@
FROM ubuntu:latest
ENV DEBIAN_FRONTEND=noninteractive
# 添加依赖描述文件
ADD requirements.txt /opt/crawlab/
# 添加二进制包
ADD crawlab /usr/local/bin/
RUN chmod +x /usr/local/bin/crawlab
# 安装基本环境
RUN apt-get update \
&& apt-get install -y curl git net-tools iputils-ping ntp python3 python3-pip \
&& apt-get clean \
&& ln -s /usr/bin/pip3 /usr/local/bin/pip \
&& ln -s /usr/bin/python3 /usr/local/bin/python
# 安装依赖
RUN pip install -r /opt/crawlab/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
WORKDIR /opt/crawlab
ENTRYPOINT ["crawlab"]

View File

@@ -0,0 +1,26 @@
# 本地开发环境worker节点制作
由于master和worker节点的存储信息是在redis上并且使用节点所在的mac地址作为key所以在开发本地需要启动master和worker节点会比较麻烦。
这里是一个运行worker节点的一个例子。
基本思路是worker节点所需的依赖制作成一个镜像然后把crawlab编译成二进制包接着把配置文件和二进制包通过volumes的形式挂载到容器内部。
这样就可以正常的运行worker节点了。之后对于容器编排的worker节点可以直接把该镜像当成worker节点的基础镜像。
### 制作二进制包
`backend`目录下执行以下命令,生成二进制包
```
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o crawlab main.go
```
### 构建worker镜像
```
docker build -t crawlab:worker .
```
### 运行worker节点
```
docker-compose up -d
```
如果在多台服务器使用`docker-compose.yml`进行编排可能出现节点注册不上的问题因为mac地址冲突了。
可以使用`networks`定义当前节点的IP段这样就可以正常注册到redis

View File

@@ -0,0 +1,25 @@
mongo:
host: 127.0.0.1
port: 27017
db: crawlab_test
username: ""
password: ""
redis:
address: 127.0.0.1
password: ""
database: 1
port: 6379
log:
level: info
path: "/opt/crawlab/logs"
server:
host: 0.0.0.0
port: 8000
master: "N"
secret: "crawlab"
spider:
path: "/opt/crawlab/spiders"
task:
workers: 4
other:
tmppath: "/tmp"

View File

@@ -0,0 +1,18 @@
version: '3'
services:
worker:
image: crawlab:worker
container_name: crawlab-worker
volumes:
- $PWD/conf/config.yml:/opt/crawlab/conf/config.yml
# 二进制包使用源码生成
- $PWD/crawlab:/usr/local/bin/crawlab
networks:
- crawlabnet
networks:
crawlabnet:
ipam:
driver: default
config:
- subnet: 172.30.0.0/16

View File

@@ -0,0 +1,7 @@
geohash2==1.1
Scrapy==1.5.0
APScheduler==3.5.1
fonttools==3.34.2
elasticsearch==5.5.3
requests==2.22.0
pymysql==0.9.3