在 Docker 图像中包装应用程序可部署项
Wrap application deployables in Docker Image
我想以最简单的方式将产品部署到生产环境中,但一直在努力解决如何部署的问题。
如果我将 docker 用于生产,我的应用程序可部署文件中有 docker 图像会很好,但我不确定这是否是好的方法。
我有几个顾虑:
- 图层系统会不会膨胀,我什么时候在新版本的图像中每次都替换文件?
- 将数据库脚本和迁移工具作为此映像的一部分是个好主意吗?
- 最后关心的是如何运行方便。我不想去那里停止 tomcat 容器并使用新应用程序映像中的卷重新启动它(因为新应用程序容器名称不能相同)。
我见过这样做的方法,但我不太喜欢它们,即部署到 Tomcat docker 映像,创建 Tomcat 已捆绑应用程序的映像或使用主机系统卷。我喜欢安装 "CD" 之类的东西。我想用其他方法评估我的想法,谈论适当的工具 运行 可能是其他问题。
wouldn't the layer system bloat, when I will replace the file every time in new version of image?
不,因为你可以 clean up dangling images
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
Is it good idea to make DB scripts and migration tool part of this image?
是的,如果您的启动脚本知道检测是否需要应用它们。
I don't like them very much i.e. deploy to Tomcat docker image ,create Tomcat image with application already bundled or use host system volume.
如果您的数据量容器与应用程序是分开的,那应该不是问题。
来自 the discussion,OP 添加:
using this docker create --name <container_name> <image_name>
with different image name can retain the container name and I can run Tomcat container with the same volumes-from?
docker run -it --rm -p 8888:8080 --volumes-from <container_name> <image_name>
这是个主意,但如果已经有一个同名的创建数据容器,它就不会工作。
如果其中没有持久数据,可以docker rm 那个数据容器,并用相同的名称重新创建它。
如果有持久化数据,那么最好通过临时挂载数据容器的中间(docker run
)容器复制新更新的数据。
我想以最简单的方式将产品部署到生产环境中,但一直在努力解决如何部署的问题。
如果我将 docker 用于生产,我的应用程序可部署文件中有 docker 图像会很好,但我不确定这是否是好的方法。
我有几个顾虑:
- 图层系统会不会膨胀,我什么时候在新版本的图像中每次都替换文件?
- 将数据库脚本和迁移工具作为此映像的一部分是个好主意吗?
- 最后关心的是如何运行方便。我不想去那里停止 tomcat 容器并使用新应用程序映像中的卷重新启动它(因为新应用程序容器名称不能相同)。
我见过这样做的方法,但我不太喜欢它们,即部署到 Tomcat docker 映像,创建 Tomcat 已捆绑应用程序的映像或使用主机系统卷。我喜欢安装 "CD" 之类的东西。我想用其他方法评估我的想法,谈论适当的工具 运行 可能是其他问题。
wouldn't the layer system bloat, when I will replace the file every time in new version of image?
不,因为你可以 clean up dangling images
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
Is it good idea to make DB scripts and migration tool part of this image?
是的,如果您的启动脚本知道检测是否需要应用它们。
I don't like them very much i.e. deploy to Tomcat docker image ,create Tomcat image with application already bundled or use host system volume.
如果您的数据量容器与应用程序是分开的,那应该不是问题。
来自 the discussion,OP 添加:
using this
docker create --name <container_name> <image_name>
with different image name can retain the container name and I can run Tomcat container with the same volumes-from?
docker run -it --rm -p 8888:8080 --volumes-from <container_name> <image_name>
这是个主意,但如果已经有一个同名的创建数据容器,它就不会工作。
如果其中没有持久数据,可以docker rm 那个数据容器,并用相同的名称重新创建它。
如果有持久化数据,那么最好通过临时挂载数据容器的中间(docker run
)容器复制新更新的数据。