Docker做为一种流行的容器技术,笔者也来玩玩,正好最近在开发一个可视化爬虫系统,Alpha版完成须要部署到服务器上,可是这个系统设计到的组建有点多,包括了Python三、Django、Pyspider、MySQL、MongoDB、Redis,好吧,涉及的框架确实有点多,Docker走起~node
为何这么多呢~~由于 用户数据库采用mysql、消息队列采用redis、存储数据采用mongodb、web框架采用Django、爬虫框架采用pyspider,不要问我为何不用一种数据库就好,我也不知道~~,好吧,开始搭建docker。python
环境:Centos7mysql
一、 安装dockerweb
sudo yum install dockerredis
二、 启动docker服务,设置开机启动sql
systemctl start docker.servicemongodb
systemctl enable docker.servicedocker
三、 安装基础镜像数据库
docker pull docker.io/mysqlbash
docker pull docker.io/redis
docker pull docker.io/mongo
docker pull pyspider
四、启动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;
五、启动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
六、启动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
七、开启一个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)复制文件
八、提交镜像
docker commit 容器名 镜像名
九、开启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/-------------------------------------