onbuild目录如何用于正式的Rails docker映像?

Iva*_*var 4 ruby-on-rails docker

我一直在为我们的团队构建一个docker镜像,该镜像使用的Ruby on Rails版本太旧,无法被正式的Docker镜像支持。在向后移植正式的Rails映像的过程中,我正在查看用于构建正式映像存储库中的Dockerfile,但我不知道它们如何组合在一起。具体来说,如何调用onbuild目录中的Dockerfile?根目录的Dockerfile中没有显式调用。

我已经阅读了ONBUILD文档,但找不到答案。

Ale*_*lex 5

请注意,基本的Rails Dockerfile和onbuild Dockerfile都从同一映像开始:ruby:2.1.5onbuild根目录Dockerfile不会调用该映像-这是一个单独的映像,比基本的Rails映像更“易于部署”。

例如,查看基本的Rails图像。它包含用于设置Rails应用程序环境的所有命令。但是,它没有任何东西可以将您的实际代码放入图像中运行。您将需要一个以该映像开头的Dockerfile,然后包含其他命令以放入您的代码。

现在查看Rails onbuild图像。您可以将Dockerfile放在只说根目录的根目录中FROM rails:onbuild。构建此映像时,它将添加您的Gemfile,run bundle install并添加您的源代码。

ONBUILD命令的真正意义在于,它使您可以将映像用作基本映像,但仍可以执行某些以前无法执行的命令。在Rails示例中,onbuild图像不知道您的特定代码。但是,您可以将onbuild映像用作基础(即FROM rails:onbuild),它将onbuild在执行您自己的Dockerfile中列出的新命令之前运行命令。