将应用程序可部署包装在Docker Image中

我想把部署到生产最容易,但如何做到这一点挣扎。

如果我将Docker用于生产,将Docker镜像与我的应用程序部署在一起会很好,但是我不确定这是否是一个好的方法。

我有几个担心:

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

我已经看到了这样做的方法,但我不喜欢他们,即部署到Tomcat泊坞窗图像,与应用程序已经捆绑或使用主机系统卷创buildTomcat图像。 我喜欢安装“CD”。 我想用其他方法来评估我的想法,谈论正确的工具来运行它可能是其他问题。

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

不,因为你可以清理悬挂的图像

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

使这个图像的DB脚本和迁移工具的一部分是好主意吗?

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

我不太喜欢它们,即部署到Tomcat docker映像,创build与应用程序捆绑的Tomcat映像或使用主机系统卷。

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

OP从讨论中补充道:

使用这个docker create --name <container_name> <image_name>具有不同的图像名称可以保留容器名称,我可以运行相同的卷的Tomcat容器 – 从?

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

这是主意,但如果已经有一个具有该名称的创build数据容器,它将不起作用。

如果没有持久数据,则可以将该数据容器装载到该数据容器中,然后使用相同的名称重新创build数据容器。

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