ESL系統的Docker化部署
阿新 • • 發佈:2019-05-03
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中將各個服務的訪問地址改為執行別名。(部署配置侵入到了程式碼中!需要尋找更優的解決方案