用Docker部署一个自己的可视化爬虫系统

China☆狼群 提交于 2019-12-06 00:50:38

Docker作为一种流行的容器技术,笔者也来玩玩,正好最近在开发一个可视化爬虫系统,Alpha版完成需要部署到服务器上,但是这个系统设计到的组建有点多,包括了Python3、Django、Pyspider、MySQL、MongoDB、Redis,好吧,涉及的框架确实有点多,Docker走起~

为什么这么多呢~~因为 用户数据库采用mysql、消息队列采用redis、存储数据采用mongodb、web框架采用Django、爬虫框架采用pyspider,不要问我为什么不用一种数据库就好,我也不知道~~,好吧,开始搭建docker。

环境:Centos7

1、 安装docker

sudo yum install docker

 

2、 启动docker服务,设置开机启动

systemctl start docker.service

systemctl enable docker.service

 

3、 安装基础镜像

docker pull docker.io/mysql

docker pull docker.io/redis

docker pull docker.io/mongo

docker pull pyspider

 

4、启动mysql服务

docker run --name 容器名称 -v 本地数据存储绝对目录路径:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=密码 -d mysql:latest

测试:

1)开启一个临时测试客户端

docker run -it --link 容器名称:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'

3)创建三个表

create database projectdb;

create database taskdb;

2)测试是否存在数据表

show databases;

 

5、启动mongo服务

docker run --name 容器名称 -v 本地数据存储绝对目录路径:/data/db -d mongo

测试:

1)开启一个临时测试客户端

docker run -it --link 容器名称:mongo --rm mongo sh -c 'exec mongo "$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT/test"'

2)测试是否存在数据表

show dbs

 

6、启动redis服务

docker run --name 容器名称 -v 本地数据存储绝对目录路径:/data -d redis redis-server --appendonly yes

1)开启一个临时测试客户端

docker run -it --link 容器名称:redis --rm redis redis-cli -h redis -p 6379

 

7、开启一个pyspider容器

docker run -it --privileged --name 容器名 --link mongo容器名称:mongo --link redis容器名称:redis --link mysql容器名称:mysql -v 本地应用绝对目录路径:容器应用绝对目录路径 -expose 3000:3000 -expose 9000:9000 -d binux/pyspider bash

1)安装node

curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -

2)复制文件

 

8、提交镜像

docker commit 容器名 镜像名

 

9、开启spiderman容器

docker run -it -P -d -v 本地应用绝对目录路径:容器应用绝对目录路径 --privileged --name 容器名 --link mongo容器名称:mongo --link redis容器名称:redis --link mysql容器名称:mysql 镜像名称 bash

1)设置语言环境变量

export LANG=zh_CN.UTF-8

2)启动pyspider

python3 run.py --message-queue redis://redis:6379/0 --projectdb mysql+projectdb://root:123456@mysql/projectdb --taskdb mysql+taskdb://root:123456@mysql/taskdb --resultdb mongodb+resultdb://mongodb  all --fetcher-num 5

好了,这样系统就部署好了,整体来看还是很方便的~~,至少用起来也不算复杂,一堆组建堆起来的系统真是麻烦~~话说自己开发的跪着也要部署好呀

------------------------------------http://my.oschina.net/Kanonpy/-------------------------------------

--------------------------------------------------http://shikanon.com/-------------------------------------

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!