在受版本控制的 Docker 图像中开发

Developing in a Docker image that's under version control

目前有一个管道,我用它在 R 中构建报告并在 Jekyll 中发布。我在 github 中将我的文件置于版本控制之下,到目前为止效果很好。

最近我开始考虑如何使用 RRubyJekyll 构建一个 docker 图像,我的任何同事都可以下载并且 运行 相同的报告,但没有在他们的计算机上设置所有的包和 gem。我查看了 Docker Hub,发现 git 提交的自动构建是一个非常有趣的功能。

我想构建一个可用于 运行 此配置的映像,并将其置于版本控制之下,并在 Docker Hub 中保持最新。这样的事情是如何工作的?

如果我只保留当前设置,我可以将 docker 文件添加到我的存储库中,Docker Hub 会为我构建图像,我只是认为 运行 我在同一张图片上的作品。

对这样的管道如何工作有什么想法吗?

Docker 集线器构建服务应该可以工作 (https://docs.docker.com/docker-hub/builds/)。也可以考虑使用gitlab-ci或者travisci(gitlab对privet项目会有用,它也提供了privetdocker注册)。

您应该有两个 Docker 文件,一个包含所有依赖项 ci ,第二个非常简约的文件用于报告(构建速度会快得多)。类似于:

FROM base_image:0.1
COPY . /reports
WORKDIR /reports
RUN replace-with-requiered-jekyll-magic

Docker上面的文件应该在您的报告存储库中。

在第二个存储库中,您可以使用所有工具和 nginx 或用于提供静态文件的东西创建基本映像。确保 nginx www-root 设置为 /reports。如果您需要更新工具,只需更新 Docker 报告文件中的 base_mage 标记。