Deployment 在Docker映像中包装应用程序可部署项
我想让部署到生产环境中变得最简单,但却在为如何做到这一点而苦苦挣扎 若我将docker用于生产,那个么将docker映像与我的应用程序可部署组件结合在一起会很好,但我不确定这是否是一个好方法 我有几点担心:Deployment 在Docker映像中包装应用程序可部署项,deployment,docker,production-environment,Deployment,Docker,Production Environment,我想让部署到生产环境中变得最简单,但却在为如何做到这一点而苦苦挣扎 若我将docker用于生产,那个么将docker映像与我的应用程序可部署组件结合在一起会很好,但我不确定这是否是一个好方法 我有几点担心: 当我每次在新版本的图像中替换文件时,图层系统不会膨胀吗 将DB脚本和迁移工具作为此映像的一部分是一个好主意吗 最后一个问题是如何方便地运行它。我不想去那里停止tomcat容器并使用新应用程序映像中的卷再次启动它(因为新应用程序容器名称不能相同) 我已经看到了实现这一点的方法,但我不太喜欢这些
docker create--name
可以保留容器名称,并且我可以从中运行具有相同卷的Tomcat容器
docker run-it--rm-p 8888:8080--
这是一个想法,但是如果已经有一个具有该名称的createdatacontainer,那么它将不起作用
如果其中没有持久性数据,则可以对该数据容器进行docker rm,并使用相同的名称重新创建它
如果存在持久性数据,那么最好通过一个中间(
docker run
)容器复制新的更新数据,该容器将临时装载数据容器。对于可能愚蠢的问题,很抱歉,但我的Tomcat容器需要知道它是从哪个容器使用可部署的。如果我将使用app1.1创建新容器,我将无法使用--volumes from为容器命名并与之链接。因此,我至少需要替换Tomcat容器的数据卷名称,对吗?@Zveratko数据卷容器包含数据,没有应用程序,因此版本在这里不适用,其名称永远不会更改。但这就是我想要的,普通Tomcat容器,并让它使用另一个容器(仅数据)来保存应用程序二进制文件(此版本将根据应用程序版本进行版本控制/标记)。它需要更多的编排,但我认为这是一种相当合法的方法,不是吗?@Zveratko是的,但是当你创建数据容器时,你可以给它一个固定的名称,并将其与tomcat容器一起使用。但是,我需要替换它的内容。我的意思是放入正确的二进制文件。我想知道如何将二进制文件包装在侧图像。然后我会有每个应用程序版本的docker图像。
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
docker run -it --rm -p 8888:8080 --volumes-from <container_name> <image_name>