使用Docker快速打包和部署執行Disconf
Docker-Disconf
Docker-Disconf是本人學習Docker後,嘗試使用Docker解決Disconf打包和執行問題的作品。Disconf是分散式配置管理平臺(Distributed Configuration Management Platform)的簡稱,使用該平臺提供的Web介面,可以統一管理多個應用,多個環境的所有配置。Disconf是一個GitHub上的開源專案,在https://github.com/knightliao/disconf可以找到相關的原始碼和文件。Disconf-web是Disconf的伺服器端,提供了用於管理分散式配置的Web介面。
準備
Docker-Disconf所使用的Dockerfile和配置樣例可以從
使用Docker打包Disconf
在disconf-build目錄中執行以下命令構建Docker映象,該映象的用於Disconf-web的打包
docker build -t yourimgs/disconf-build .
在disconf-build目錄執行以下的命令,打包Disconf-war
docker run -v ${PWD}/working:/home/work/dsp/disconf-rd/working \ -v ${PWD}/config:/home/work/dsp/disconf-rd/online-resources \ --name disconf-build yourimgs/disconf-build
如果修改了properties檔案,可以通過再次啟動disconf-build容器來打包
docker start disconf-build
使用Docker Compose部署執行Disconf
如下圖所示,Disconf的部署使用到了Nginx, Tomcat, MySQL, Redis和ZooKeeper:
在disconf-compose目錄中執行
docker-compose up
所有容器啟動正常以後,就可以通過http://yourhost:8081訪問Disconf-web服務了。
Disconf客戶端的配置
首先應配置disconf.properties指向http://yourhost:8081。Disconf的客戶端需要訪問zookeeper,會使用/DockerDisconf/disconf-build/config/zoo.properties中的配置。為了統一配置,Docker-Disconf的配置使用了disconf-zoo:2181,因此在客戶端所在的主機上需要配置hosts檔案,將主機名disconf-zoo對映到Docker所在的伺服器ip。
(非Docker Compose方式)部署執行Disconf
【說明】本章是早期版本,操作步驟較多。推薦使用前面章節介紹的Docker Compose部署執行。
1) 啟動一個Redis服務,執行
docker run --name disconf-redis -d redis:3.0
2) 啟動MySQL服務,在disconf-mysql目錄執行
docker run --name disconf-mysql -e MYSQL_ROOT_PASSWORD=passw0rd -v ${PWD}/files/sql:/docker-entrypoint-initdb.d \ -v ${PWD}/data:/var/lib/mysql -d mysql:5.7
3) 建立一個ZooKeeper服務,在disconf-zoo目錄下執行
docker build -t yourimgs/disconf-zoo . docker run --name disconf-zoo -p 2181:2181 -d yourimgs/disconf-zoo
4) 建立應用伺服器映象,在disconf-app目錄下執行
docker build -t yourimgs/disconf-app . docker run -d --link disconf-mysql:disconf-mysql --link disconf-redis:disconf-redis --link disconf-zoo:disconf-zoo \ -v /home/ubuntu/disconf-build/working/war:/home/work/dsp/disconf-rd/war --name disconf-app yourimgs/disconf-app
5) 在disconf-nginx目錄下執行
docker run --name disconf-nginx -v ${PWD}/nginx.conf:/etc/nginx/nginx.conf:ro \ -v /home/ubuntu/disconf-build/working/war/html:/home/work/dsp/disconf-rd/war/html:ro \ -v ${PWD}/logs:/home/work/var/logs/disconf -d -p 8081:8081 --link disconf-app:disconf-app nginx:1.9
所有容器啟動正常以後,就可以通過http://yourhost:8081訪問Disconf-web服務了。Disconf的客戶端需要訪問zookeeper,所以在配置Disconf的客戶端時請配置hosts檔案,將主機名disconf-zoo對映到Docker所在的伺服器上。