刚开始玩Docker.要在tomcat上部署战争,似乎有两种方法:
>使用嵌入在图像中的java tomcat war创建映像
>使用java tomcat创建基本映像,然后将war“注入”基础映像(例如,通过主机卷装入)
方法1:
>需要为每个构建创建一个图像
>完全捆绑的解决方案
>由于图像尺寸较大,为每个版本维护一个图像并共享图像以进行下游部署可能会成为一个问题
方法2:
>在docker hub中保留基本映像
>在外部添加战争并运行
>更小的可分发大小(仅限战争),但部署团队需要“知道”要运行的映像名称的额外步骤
这些方法中的哪一种通常用于生产?
如果要将代码部署到Docker编排服务(如Google容器引擎,Amazon容器服务等),则选项1通常是唯一可行的解决方案,因为您无权访问主机.选项1在docker业务流程系统上也更具可扩展性,因为您可以在各种docker主机上创建多个服务实例.
但是,由于您提到的原因,我自己使用选项2,因为我使用云形成来管理通过自动扩展组进行扩展,这可以在本地存储中为我的战争提供实例.现在我不认为docker orchestration足够成熟,我可以替换我的外部编排系统,如果我有这些系统设置,那么没有必要失去方法2的好处.但是,当amazon允许我们直接连接ELB时docker容器并做了一些改进我会认真考虑.
Due to the large image sizes,maintaining one image for each build and sharing the image for downstream deployment could become an issue