ESL须要四台服务器:分别是数据库Mysql服务器,Redis服务器,EMQ服务器,以及Spring Boot所在web服务器。Docker化部署就是将这四台服务器所有放在container中运行,经过--link的方式,实现web服务器对其余三台服务器的访问。java
1. Mysql的docker化:操做参考上一篇博文,只须要将两个sql文件,根据实际状况进行修改,将镜像打包为zkong/database, 启动:web
docker run --name=elsdata -d -p 23306:3306 zkong/database
2. Redis:可经过redis的docker官方镜像进行安装。redis
docker pull redis docker run --name=musing_ramanujan -d -p 26379:6379 redis
3. EMQ: 下载emqtt的docker镜像,http://www.emqtt.com/downloadssql
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系统docker
新建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放入其中bash
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中将各个服务的访问地址改成运行别名。(部署配置侵入到了代码中!须要寻找更优的解决方案!)app