Docker:哪种方法更好? WAR嵌入图像或基本图像+战争?

时间:2014-12-31 09:51:47

标签: java tomcat docker

刚开始玩Docker。要在tomcat上部署战争,似乎有两种方法:

  1. 使用嵌入在图像中的java + tomcat + war创建图像
  2. 使用java + tomcat创建基本映像,然后" inject"战争到基础图像(例如通过主机卷安装)
  3. 方法1:

    • 需要为每个版本创建一个图像
    • 完全捆绑的解决方案
    • 由于图像尺寸较大,为每个版本维护一个图像并共享图像以进行下游部署可能会成为一个问题

    方法2:

    • 在docker hub中保留基本图像
    • 从外部添加战争并运行
    • 较小的可分发大小(仅限战争),但部署团队需要知道的额外步骤。要运行的图像的名称

    这些方法中的哪一种通常用于生产?

1 个答案:

答案 0 :(得分:3)

如果您要将代码部署到Docker业务流程服务(如Google容器引擎,亚马逊容器服务等),那么选项1通常是唯一可行的解​​决方案,因为您无法访问主机。选项1在docker业务流程系统上也更具可扩展性,因为您可以在各种docker主机上创建多个服务实例。

但是,我自己使用选项2是因为你提到的原因,因为我通过使用云形成来管理自动扩展组的扩展,这可以在本地商店中提供我的战争实例。现在我不认为docker orchestration足够成熟,我可以替换我的外部编排系统,如果我有这些系统设置,那么没有必要失去方法2的好处。但是,当amazon允许我们连接ELB时直接对码头集装箱并进行一些改进,我会认真考虑。

  

由于图像尺寸较大,为每个版本维护一个图像并共享图像以进行下游部署可能会成为一个问题

FYI Docker使用基于差异的文件系统,因此只要您更改war文件,您的图像存储就不应该成为问题。