在Docker Image

时间:2015-10-05 07:31:41

标签: deployment docker production-environment

我希望尽可能最简单地部署到生产环境,但我们仍然在努力解决这个问题。

如果我要使用docker进行制作,那么将Docker镜像与我的应用程序可部署的一起会很好,但我不确定它是不是很好的方法。

我有几个问题:

  1. 当我每次都在新版本的图片中替换文件时,图层系统不会膨胀吗?
  2. 将数据库脚本和迁移工具作为此映像的一部分是否是个好主意?
  3. 最后一个问题是如何方便地运行它。我不想去那里停止tomcat容器并使用新应用程序映像中的卷再次启动它(因为新的app容器名称不能相同)。
  4. 我已经看到了这样做的方法,但我不太喜欢它们,即部署到Tomcat docker镜像,创建已捆绑应用程序的Tomcat镜像或使用主机系统卷。我喜欢安装“CD”之类的东西。我想用其他方法评估我的想法,谈论运行它的正确工具可能是其他问题。

1 个答案:

答案 0 :(得分:1)

  当我每次在新版本的图像中替换文件时,

层系统不会膨胀吗?

不,因为你可以clean up dangling images

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

将数据库脚本和迁移工具作为此映像的一部分是否是个好主意?

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

  

我不太喜欢它们,即部署到Tomcat docker镜像,创建已绑定应用程序的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)容器复制新更新的数据。