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