如何更改Rails基础Docker镜像的Ruby和Rails版本?

Docker基本的图像轨道为Ruby on Rails提供了一个完整的环境。 它从ruby上游图像中拉出。 rails基础图像指定了Ruby和Ruby on Rails版本。

如果我们想要使用不同的Ruby和Ruby on Rails版本呢?

我们在我们的项目文件夹中编辑我们的Dockerfile吗? 或者,我们进入机器,安装我们想要的ruby版本,然后build立自己的图像?

更多细节:

rails的基础图像文档说,你的doc文件可以简单地是一行代码:

FROM rails:onbuild 

这行代码从Docker Hub上的rails图像中提取。 这个图像有它自己的Dockerfile。 这个Dockerfile的第一行是FROM ruby:2.2

为了重申这个问题,使用不同的Ruby和Ruby on Rails版本创build基于rails图像的容器的最佳方式是什么? 如果可能的话,一些示例代码可能有助于理解如何做到这一点。

我假设你想要一个适合大量rails应用程序的docker镜像。

我根本不知道docker工人,但可能忽略Docker提供给你的东西,自己动手:

创build一个图像与所有伟大的ruby版本,可能1.9和2.3, 我认为你应该坚持最新的ruby。

使用https://github.com/rbenv/rbenv提供一个rubyenv

每个Rails应用程序通常都附带一个Gemfile。 在生产版本中,gem版本被locking在Gemfile.lock文件中。

如果gem需要更新,您将需要更新应用程序代码,然后与gem

 bundle install 

所以我认为不可能有很好的轨道应用程序“一刀切”的形象。

我在安装高效的rails应用程序时所做的事情就是将它们的gem安装在应用程序文件夹中。

 bundle install --path vendor/bundle 

这将gem应用程序放置在供应商目录中。 在这里我看不到什么大的机会可以让更新更简单。


因为我从来没有尝试docker,甚至访问他们的网站,我的post可能是无用的(Sry),我希望我了解你的意图,至less。