在哪里把Dockerfile保存在一个项目中?

我正在获得关于Docker的知识,我有以下问题

  • Dockerfile在哪里保存在一个项目中?
    • 他们和源头保持在一起吗?
    • 他们是否在源头之外? 你有一个专门用于Dockerfile的Git仓库吗?

如果CI服务器应该为每个构build创build一个新的映像并在testing服务器上运行它,那么是否保留以前的映像? 我的意思是,你是否标记了以前的图像,或者在创build新图像之前删除了以前的图像?

我是一个Java EE开发人员,所以我使用Maven,Jenkins等。

Dockerfile保存位置的唯一限制是您添加到映像的任何文件必须位于文件系统中的Dockerfile下方。 我通常看到他们在项目的顶层,虽然我有一个回购,结合了一堆小图像,我有类似的东西

top/ project1/ Dockerfile project1_files project2/ Dockerfile project2_files 

Jenkins docker插件可以使用Dockerfile指向一个任意的目录,所以很简单。 至于CI,我见过的最常见的策略是用CI构build的每个图像标记为“最新”。 这是默认的,如果你不添加一个标签到一个版本。 然后释放获得自己的标签。 因此,如果你只运行一个没有参数的图像,你会得到由CI构build的最后一个图像,但是如果你想要一个特定的版本,很容易这样说。

我build议保持Dockerfile的源代码,因为你会makefile。

构build上下文问题意味着大多数Docker文件都保存在项目的顶层或附近。 你可以通过使用脚本或构build工具来复制Dockerfiles或源文件夹,但是会有点痛苦。

我不知道有关标签和CI的最佳做法。 使用git hash或类似的标签可能是一个很好的解决scheme。 您需要保留至less一代旧图像,以防需要回滚。

Interesting Posts