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/-------------------------------------
来源:oschina
链接:https://my.oschina.net/u/2266481/blog/673534