将war文件图像放入docker容器是一种好习惯吗?

时间:2016-07-29 09:36:20

标签: docker spring-boot dockerfile

我是码头工人的新手。我有一个Spring-boot应用程序,我想使用docker部署和运行它。将war文件图像放入容器中是不是一个好习惯,或者最好将jar文件放入容器中?为什么呢?

P.S。一旦我读到它就会更好地制作罐子而不是战争" :-)但不知道背后的原因。

2 个答案:

答案 0 :(得分:5)

为您的应用程序构建docker镜像的一个主要原因是提供一个人工可以运行的人工制品,而无需安装和管理外部软件依赖项(例如运行war文件的app服务器)。

从容器用户的角度来看,将代码打包在jar或war文件中还是作为fortran二进制文件都没有区别。他们只是运行一个容器图像。

从您的角度来看,执行Docker构建和配置管理,打包jar文件和复制将比尝试设置和配置应用服务器以打包然后将每个版本部署到应用服务器更简单。有关java build的更多技术组件,请参阅Shaun Inman

答案 1 :(得分:4)

马特的回答是正确的,但你必须考虑其他一些观点。

  • 更新应用程序服务器: tomcat或glassfish的docker镜像由负责公司维护。如果他们发现了一个讨厌的(安全)错误,他们会修复它并将该映像的新版本推送到docker hub。要将容器更新为该安全版本,您所要做的就是重建映像并运行新版本。如果将应用程序服务器捆绑在jar内,则必须重新编译整个项目以使用该更新版本。 BTW大多数应用程序服务器都有自动部署机制来轻松部署战争。
  • Dockers缓存:如果您从java基础图像构建图像并简单地在其上复制胖罐,则整个图像由一个大图层组成。如果您构建应用程序的另一个版本,则大的jar文件会发生变化,从而导致docker创建另一个大层。这两个大层都需要光盘上的空间。另一方面,如果你部署"小" war文件到应用程序服务器,这两个图像共享所有图层,直到带有war文件的图层。通过这些机制,docker可以提高光盘使用率并加快构建时间。