2015-10-05 81 views
1

我想将部署投入生产是最容易的,但是如何去实现这一点,正在苦苦挣扎。在Docker中包装应用程序可部署镜像

如果我将docker用于生产,将docker映像与我的应用程序deployable配合使用会很好,但我不确定这是否是一种好方法。

我有几个担心:

  1. 不会层系统膨胀,当我将取代在图像的新版本,每一次文件?
  2. 让DB脚本和迁移工具成为这个镜像的一部分是个好主意吗?
  3. 最后一个问题是如何方便地运行它。我不想去那里停止tomcat容器,并使用新应用程序映像中的卷重新启动它(因为新的应用程序容器名称不能相同)。

我见过的方式来做到这一点,但我不喜欢他们很即部署到Tomcat码头工人的形象,创建应用程序的Tomcat图像已经捆绑或使用主机系统卷。我喜欢安装“CD”。我想用其他方法评估我的想法,谈论运行它的适当工具可能是其他问题。

回答

1

不会使图层系统膨胀,当我将每次在新版本的图像中替换文件?

没有因为你可以clean up dangling images

docker rmi $(docker images --filter "dangling=true" -q --no-trunc) 

是好主意,使这一形象的DB脚本和迁移工具的一部分?

是的,如果你的启动脚本知道检测是否需要应用它们。

我不太喜欢它们,即部署到Tomcat泊坞窗图像,创建Tomcat图像与应用程序已捆绑或使用主机系统卷。

如果您的数据容器与应用程序是分开的,那应该不是问题。

the discussion,在OP补充说:使用

docker create --name <container_name> <image_name>不同的图像名称可以保留容器的名字,我可以运行在相同的卷,从Tomcat容器?

docker run -it --rm -p 8888:8080 --volumes-from <container_name> <image_name> 

这是想法,但如果已经有一个同名的创建数据容器,它不会工作。

如果其中没有持久数据,则可以将该数据容器托管到该数据容器中,然后用相同的名称重新创建它。

如果存在持久数据,则最好通过中间(docker run)容器复制新的更新数据,该容器将临时安装数据容器。

+0

对不起,也许愚蠢的问题,但我的Tomcat容器需要知道它使用可部署的容器。如果我将使用app 1.1创建新的容器,我将无法使用--volumes-from 命名该容器相同的名称并与其链接。所以我至少需要替换Tomcat容器的数据卷名称,对吧? – Zveratko

+0

@Zaveratko数据卷容器包含数据,没有应用程序,因此该版本不适用于此,其名称也不会更改。 – VonC

+0

但是,这是我想要的,普通的Tomcat容器,并使用另一个容器(仅用于数据)来存放应用程序二进制文件(这个容器将根据应用程序版本进行版本化/标记)。它需要多一点的编排,但我认为这是非常合法的做法,不是吗? – Zveratko

相关问题