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

原创
2016/05/11 16:34
阅读数 9.4K

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/-------------------------------------

展开阅读全文
打赏
3
95 收藏
分享
加载中
Kanonpy博主
docker容器内外拷贝文件代码,主要用于不喜欢用Dockerfile重构镜像的人~~

docker cp foo.txt mycontainer:/foo.txt
docker cp mycontainer:/foo.txt foo.txt
2016/06/17 10:28
回复
举报
更多评论
打赏
1 评论
95 收藏
3
分享
返回顶部
顶部