作者:记忆的旅行者 | 来源:互联网 | 2023-05-25 12:28
我正在创建一些用于在开发机器上进行测试的docker镜像.我计划为我们的主应用程序构建一个,以及为每个外部依赖项构建一个(postgres,elasticsearch等).对于主应用程序,我正在努力编写Dockerfile或编译要托管的映像.
一方面,Dockerfile很容易随时间共享和修改.另一方面,我希望在提交新图像之前,在vim中更容易进行高级配置(自定义应用程序属性文件).
我知道我可以得到相同的结果,但我正在寻找PROS,CONS和任何方向的问题.
作为一个方面说明,我计划在所有包装了一起利用图.我对这个工具的初步印象非常积极.
谢谢!
1> Javier Corte..:
使用Dockerfile:
您有一个描述图像构建方式的"审核日志".对我来说,如果它将被用于生产管道中,这将是更基本的,因为更多的人正在工作,可维护性应该是一个优先事项.
您可以自动化图像的构建过程,这是使用系统更新更新容器的简单方法,或者是否必须参与持续交付管道.
这是一种创建容器层的更简洁方法(每个Dockerfile命令是不同的层)
更改容器并提交更改非常适合测试目的和概念测试的快速开发.但是如果你计划使用结果图像一段时间,我肯定会使用Dockerfiles.
除此之外,如果您必须修改文件并使用bash工具(awk,sed ...)进行操作,结果非常繁琐,您可以在构建过程中从外部添加任何您想要的文件.
2> 小智..:
我完全同意Javier,但是您需要了解使用dockerfile创建的一个映像可能与使用相同版本的dockerfile 1天后的映像构建不同.
也许在您的构建过程中,您自动检索应用程序或操作系统等的最新更新...
此时如果你需要重现崩溃或任何你不能依赖于dockerfile的东西.
Dockerfiles需要完全指定他们调用和包含的东西的版本,否则您将获得此处描述的不可重现的行为.如果dockerfile(或makefile,或任何构建工具)为不同的运行产生不同的结果,那么它写错了.如果构建工具从某种形式的存储库中提取,并且不能确保每次都获得相同的东西,那么存储库设计错误.