Docker学习之部署SpringBoot微服务

前言

许久没发Docker相关的文章了,很早之前就写过 Dockerfile,无非就是工具而已,没有想象中的那么神秘,当热深入进去又是另一回事了。

步骤

这里我们以短信、邮件发送服务为例,演示整个过程,目录下事先生成了相关启动JAR,项目采用 springboot+dubbo对外提供RPC服务。

创建 Dockerfile 文件

  1. # 基础镜像:仓库是java
  2. FROM java:7-jre
  3. # 当前镜像的维护者和联系方式
  4. MAINTAINER itstyle 345849402@qq.com
  5. # 挂载卷
  6. VOLUME /tmp
  7. # 将打包好的springBoot程序拷贝到容器中的指定位置
  8. ADD itstyle_send.jar /opt/app.jar
  9. # 容器对外暴露端口
  10. EXPOSE 8080
  11. # 容器启动后需要执行的命令(ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Denv=DEV","/opt/app.jar"])
  12. CMD java -Djava.security.egd=file:/dev/./urandom -jar /opt/app.jar

执行 docker build 进行构建

执行docker build命令,docker就会根据Dockerfile里你定义好的命令进行构建新的镜像。
  1. docker build -t itstyle_send:v1 .

构建过程

  1. Sending build context to Docker daemon 100.6 MB
  2. Step1: FROM java:7-jre
  3. Trying to pull repository docker.io/library/java ...
  4. 7-jre:Pullingfrom docker.io/library/java
  5. 5040bd298390:Pull complete
  6. fce5728aad85:Pull complete
  7. c42794440453:Pull complete
  8. 9789263043d1:Pull complete
  9. 028c93201aa7:Pull complete
  10. Digest: sha256:6fb55e5ffc4ce926c320faa5fb807ed1bccd84ccbbe278109c67c5b38684e633
  11. ---> b0006d129082
  12. Step2: MAINTAINER itstyle 345849402@qq.com
  13. --->Runningin3eb849897209
  14. --->804057905232
  15. Removing intermediate container 3eb849897209
  16. Step3: VOLUME /tmp
  17. --->Runningin60c526a95e46
  18. ---> dc3d00181d4a
  19. Removing intermediate container 60c526a95e46
  20. Step4: ADD acts_send.jar /opt/app.jar
  21. ---> e55343642421
  22. Removing intermediate container 09b296b4e9a3
  23. Step5: EXPOSE 8080
  24. --->Runningin fb4d820d9a91
  25. ---> da660a4e78e3
  26. Removing intermediate container fb4d820d9a91
  27. Step6: CMD java -Djava.security.egd=file:/dev/./urandom -jar /opt/app.jar
  28. --->Runningin adb0a7921410
  29. --->0b7adaac48d9
  30. Removing intermediate container adb0a7921410
  31. Successfully built 0b7adaac48d9

查看镜像

  1. docker images
如果出现以下说明构建成功:
  1. REPOSITORY   TAG   IMAGE ID   CREATED    SIZE
  2. itstyle_send  v1   0b7adaac48d97 minutes ago   374.5 MB
开发者可以把自己制作的镜像push到远端仓库,在任何一个系统上pull下来就可以直接部署了,做到一处制作,到处运行。

创建并运行容器

  1. docker run -d --name itstyle_send  -p 8080:8080 itstyle_send:v1

查看日志

  1. docker logs -f itstyle_send

问题

不过这里有一个问题,最终导致服务并没有启动成功。由于服务对外提供 RPC 服务,使用 zookeeper 作为注册中心,而容器并不能访问宿机以及相关内网网段的IP。
宿机网段:192.168.容器网段:172.17..
解决方案
如果多台服务器在一个局域网,可以把容器跟宿机配置成一个网段。
如果是外网地址,使用zookeeper中节点digest授权认证或者防火墙安全组。
本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
极客文库 » Docker学习之部署SpringBoot微服务

欢迎加入「极客文库」,成为原创作者从这里开始!

立即加入 了解更多