Ruby on rails 在docker容器中使用版本管理器(如RVM)是一种不好的做法吗?
我刚开始使用docker,到目前为止,我找不到很多包含Ruby on rails 在docker容器中使用版本管理器(如RVM)是一种不好的做法吗?,ruby-on-rails,ruby,docker,rvm,dockerfile,Ruby On Rails,Ruby,Docker,Rvm,Dockerfile,我刚开始使用docker,到目前为止,我找不到很多包含RVM或rbenv的ruby/rails图像 我看到的最常见的情况是,每个容器都有多个标记,每个标记的图像版本都只安装了一个版本的Ruby。看看这个例子 使用其他版本的唯一方法是对正在使用的映像使用另一个标记,因为您无法使用RVM或rbenv安装新版本 这是故意的吗 在docker容器中对编程语言使用版本管理器是一种不好的做法吗 为什么?这在docker中被认为是一种不好的做法或反模式。RVM正试图解决docker正在解决的一个类似问题,但采
RVM
或rbenv
的ruby/rails图像
我看到的最常见的情况是,每个容器都有多个标记,每个标记的图像版本都只安装了一个版本的Ruby。看看这个例子
使用其他版本的唯一方法是对正在使用的映像使用另一个标记,因为您无法使用RVM或rbenv安装新版本
这是故意的吗
在docker容器中对编程语言使用版本管理器是一种不好的做法吗
为什么?这在docker中被认为是一种不好的做法或反模式。RVM正试图解决docker正在解决的一个类似问题,但采用了一种非常不同的方法。RVM是为主机或VM设计的,所有工具都安装在一个地方。Docker创建了一个隔离的环境,其中只包含运行单个应用程序所需的工具
容器在理想情况下是最简单的,只包含应用程序所需的先决条件,使它们更具可移植性。Docker还使用层和联合文件系统为每个映像重用公共基础映像,因此Ruby version X之类的任何副本只下载并写入磁盘一次(忽略对该映像的更新)。这取决于您将如何使用它。如果您需要在自定义docker映像上安装任意版本的ruby,而不需要下载tarball和应用补丁,那么RVM就是完美的选择。RVM基本上是一个bash脚本,因此在docker容器中使用它与在docker容器中使用任何其他bash脚本一样糟糕。为什么要在一个容器中运行多个版本的Ruby?或者你为什么要在不重新构建的情况下切换容器的配置?@spickermann,正如我说的,我是Docker的新手。我觉得有点奇怪,你必须更新整个图像以使用不同的ruby版本。我也没有太多使用docker的经验,但我认为使用docker It的原因之一是可以将服务器或服务的可复制配置作为代码。一旦您在运行时更改docker容器的配置,其他人将无法在不与您讨论所做更改的情况下构建完全相同的构建。从这个角度来看,这对我来说是非常有意义的,不是在一个容器中使用多个版本的Ruby,而是将配置固定到一个特定的版本。不要投反对票,这对于那些无论如何都坚持使用RVM的人来说是一个很好的问题。回答贝娄是一个完美的解释,至少有一些证明这样的遗产爱好者。伟大的解释。了解这两个工具是如何相互关联的很好。