【问题标题】:How to change Ruby and Rails version for the Rails base Docker image?如何更改 Rails 基础 Docker 映像的 Ruby 和 Rails 版本?
【发布时间】:2016-02-12 09:50:22
【问题描述】:

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

如果我们想使用不同的 Ruby 和 Ruby on Rails 版本怎么办?

我们是否在项目文件夹中编辑 Dockerfile?或者,我们是否 ssh 进入机器,安装我们想要的 ruby​​ 版本,然后构建我们自己的镜像?

更多细节:

rails 基础图像文档说您的 doc 文件可以只是一行代码:

FROM rails:onbuild

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

只是为了重申这个问题,基于 rails 映像创建具有不同 Ruby 和 Ruby on Rails 版本的容器的最佳方法是什么?如果可能,一些示例代码可能有助于理解如何执行此操作。

【问题讨论】:

    标签: ruby-on-rails ruby docker


    【解决方案1】:

    我假设您想要一个适用于大量 Rails 应用程序的 docker 映像。

    我完全不了解 docker,但可能会忽略 Docker 提供给你的东西,自己做吧:

    创建一个包含所有优秀 ruby​​ 版本的图像,可能是 1.9 和 2.3, 但是我认为你应该坚持使用最新的 ruby​​。

    使用https://github.com/rbenv/rbenv 提供一个 ruby​​ 环境

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

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

    bundle install
    

    所以我认为不可能为大量的 Rails 应用程序提供一个“一刀切”的 docker 镜像。

    我在安装生产性 Rails 应用程序时要做的就是将它们的 gem 安装在应用程序文件夹中。

    bundle install --path vendor/bundle
    

    这会将 gem 应用程序放在其供应商目录中。我认为这里也没有很大的机会让更新生活更轻松。


    由于我从未尝试过 docker,甚至没有访问过他们的网站,所以我的帖子可能毫无用处(抱歉) 我希望我至少能理解你的意图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多