1. 程式人生 > >ESL系統的Docker化部署

ESL系統的Docker化部署

ESL需要四臺伺服器:分別是資料庫Mysql伺服器,Redis伺服器,EMQ伺服器,以及Spring Boot所在web伺服器。Docker化部署就是將這四臺伺服器全部放在container中執行,通過--link的方式,實現web伺服器對其他三臺伺服器的訪問。

1. Mysql的docker化:操作參考上一篇博文,只需要將兩個sql檔案,根據實際情況進行修改,將映象打包為zkong/database, 啟動:

docker run --name=elsdata -d -p 23306:3306 zkong/database

2. Redis:可通過redis的docker官方映象進行安裝。

docker pull redis
docker run --name=musing_ramanujan -d -p 26379:6379 redis

3. EMQ: 下載emqtt的docker映象,http://www.emqtt.com/downloads

wget http://www.emqtt.com/downloads/2318/docker
unzip <下載到的zip檔案>
docker load < <解壓後的檔案>
docker image ls
docker run -tid –name=emq20 -p 21883:1883 -p 28083:8083 -p 28883:8883 -p 28084:8084 -p 38083:18083 <映象名稱>

4. ESL web系統

新建Dockerfile,如:

FROM java:8
EXPOSE 9999

VOLUME /tmp
ADD demo-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]

新建目錄eslapp,並把Dockerfile和demo-0.0.1-SNAPSHOT.jar放入其中

mkdir eslapp
cd eslapp
docker build -t zkong/esl .

啟動,使用--link方式,使得web伺服器可以訪問其他三個容器的服務,所以其他三個容器啟動時都會帶上--name指定container名稱

docker run -p 29999:9999 --link emq20:emq20 --link musing_ramanujan:eslredis --link esldata:esldata zkong/esl

在web伺服器的container中使用的其他container的別名進行訪問,所以需要在application.yml中將各個服務的訪問地址改為執行別名。(部署配置侵入到了程式碼中!需要尋找更優的解決方案