1. 程式人生 > >使用Docker快速打包和部署執行Disconf

使用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和配置樣例可以從

https://git.oschina.net/gongxusheng/docker-disconf.git下載。以下說明文件中的操作假設使用者已經成功安裝了DockerDocker-compose,並且已經把DockerDisconf目錄下的資料夾上傳到了/home/ubuntu目錄。如果解壓在了其它的目錄。需要調整部分配置檔案和命令。

使用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所在的伺服器上。