2016-07-29 44 views
3

我是码头工人。我有一个Spring启动应用程序,我想要使用docker进行部署和运行。将战争文件图像放入容器中是否是一种好的做法,或者最好将jar文件放入容器中?为什么?将war文件映像放入docker容器是一种很好的做法吗?

P.S.一旦我读到“制造罐子而不是战争”:-)更好,但不知道背后的原因。

+0

你可以把JAR,WAR,SAR,或在泊坞窗任何类型的文件。取决于你想要达到的目标。 – atv

+0

所以对于一个春季启动应用程序,这两种方式都是常见的做法? – Lina

回答

4

其中一个主要的原因为建设一个码头工人形象,为您的应用程序是提供制造品,人们可以在不安装和管理外部软件依赖关系(如应用程序服务器来运行一个war文件)运行。

从容器用户的角度来看,这都没有区别你是否在一个罐子或战争文件或一个FORTRAN二进制包你的代码。他们所做的只是运行一个容器图像。

从你身边,执行Docker构建和配置管理,打包jar文件和复制将是一个比尝试设置和配置应用服务器进行打包,然后将每个发行版部署到应用服务器更简单的解决方案。请参阅Ohmens answer了解更多java构建的技术组件。

+0

谢谢马特!非常全面! – Lina

1

马特的答案是正确的,但你必须要考虑一些更多的点。

  • 更新到ApplicationServer的:Tomcat的或是Glassfish泊坞窗图像是由公司负责维护。如果他们发现一个令人讨厌的(安全)错误,他们会修复它,并将该映像的新版本推送到码头中心。要将容器更新为该安全版本,您只需重新构建映像并运行新版本即可。如果将应用程序服务器捆绑在jar内,则必须重新编译整个项目才能使用该更新版本。顺便说一句,大多数应用程序服务器都有自动部署机制来轻松部署战争。
  • 码头工人缓存:如果你建立在Java基础图像的图像和简单复制就可以了你的脂肪罐子,你的整个图像由一个大的层。如果您构建应用程序的另一个版本,则大jar文件会发生变化,从而导致docker创建另一个大图层。这两个大图层都需要光盘上的空间。另一方面,如果将“小型”war文件部署到应用程序服务器,则两个映像将共享所有层,直到具有war文件的层。通过这些机制,docker可以提高光盘使用率并加快构建时间。
+0

谢谢哦!更全面! :-) – Lina

+1

我写我的论文关于这个话题,所以你的欢迎:-D – Ohmen

+0

@Ohmen你认为应用程序重新编译会比为新的应用程序服务器更新Docker构建和部署更糟吗? – Matt

相关问题