将Dockerfile保存在项目中的位置?

时间:2014-12-09 20:05:30

标签: docker jenkins

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

  • Dockerfile保存在项目中的哪个位置?
    • 他们是否与来源保持联系?
    • 他们是否被排除在外?你是否只为Dockerfile拥有一个自己的Git存储库?

如果CI服务器应为每个构建创建一个新映像并在测试服务器上运行它,那么您是否保留上一个映像?我的意思是,您是否标记了上一张图片,还是在创建新图片之前删除了上一张图片?

我是一名Java EE开发人员,所以如果重要的话,我会使用Maven,Jenkins等。

2 个答案:

答案 0 :(得分:13)

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

top/
  project1/
    Dockerfile
    project1_files
  project2/
    Dockerfile
    project2_files  

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

答案 1 :(得分:1)

我建议像使用makefile一样保留Dockerfile和源码。

构建上下文问题意味着大多数Dockerfiles都保留在项目的顶层或附近。您可以通过使用脚本或构建工具来复制Dockerfiles或源文件夹来解决这个问题,但这会让您感到有点痛苦。

我没有意识到有关标签和CI的最佳做法。使用git哈希或类似标记进行标记可能是一个很好的解决方案。您需要保留至少一代旧图像,以防需要回滚。