如何在docker上安装Ruby?

时间:2016-03-30 10:15:56

标签: ruby-on-rails ruby docker docker-machine calabash-android

我正在尝试在docker上安装ruby。我可以安装1.9版本,但无法安装最新版本,如2.2.0及更高版本。我实际上是想在docker上设置calabash。尝试了this。每当我尝试在其中安装calabash-android时会出现错误

ERROR:  Error installing calabash-android:
luffa requires Ruby version >= 2.0.

6 个答案:

答案 0 :(得分:11)

如果你正在启动FROM一个不同的基础Docker实例,你可以简单地RUN从你的基本实例的包管理系统安装Ruby的命令。例如,this GitHub Gist显示了如何使用apt-get在Ubuntu实例上安装Ruby:

# Pull base image.
FROM dockerfile/ubuntu

# Install Ruby.
RUN \
  apt-get update && \
  apt-get install -y ruby

this Gist显示了一个Dockerfile,它被配置为在Ubuntu实例上安装RVM和Ruby:

FROM ubuntu

RUN apt-get update

# basics
RUN apt-get install -y openssl

# install RVM, Ruby, and Bundler
RUN \curl -L https://get.rvm.io | bash -s stable
RUN /bin/bash -l -c "rvm requirements"
RUN /bin/bash -l -c "rvm install 2.0"
RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc"

答案 1 :(得分:10)

您可以从以下开始查看dockerfile:

FROM ruby:2.3.0

那将使用docker image ruby,已经安装了ruby。

答案 2 :(得分:4)

这使得ruby可用于任何未来的RUN命令,而不仅仅是bash:

FROM debian:stretch-slim
RUN \
  apt-get update && apt-get install -y --no-install-recommends --no-install-suggests curl bzip2 build-essential libssl-dev libreadline-dev zlib1g-dev && \
  rm -rf /var/lib/apt/lists/* && \
  curl -L https://github.com/sstephenson/ruby-build/archive/v20180329.tar.gz | tar -zxvf - -C /tmp/ && \
  cd /tmp/ruby-build-* && ./install.sh && cd / && \
  ruby-build -v 2.5.1 /usr/local && rm -rfv /tmp/ruby-build-* && \
  gem install bundler --no-rdoc --no-ri

答案 3 :(得分:3)

信誉低下,所以我无法在线内评论(潜伏了所有这些年,叹息),但是如果在寻找将旧红宝石版本安装到docker的过程中发生任何其他事件,我发现@grosser的回答非常有帮助-至少对于我来说,它根本无法通过RVM进行安装。

但是,我建议使用推荐的方法来安装ruby-build-以下对我有用:

<prior steps>
RUN git clone https://github.com/rbenv/ruby-build.git && \
  PREFIX=/usr/local ./ruby-build/install.sh && \
  ruby-build -v 2.4.1 /usr/local && \
  gem install bundler -v <VERSION HERE> --no-ri --no-rdoc && bundle install
<following steps>

关键点在于,这可以使您了解ruby-build的最新信息,而不是像@grosser的评论中那样被硬编码为2018-03-29版本。

答案 4 :(得分:0)

由于@Jacob和@grosser,我已经设法以类似的方式设置了我的矿井,如果还有更多解压缩的方式:

# Install Local ruby
RUN git clone https://github.com/rbenv/rbenv.git ~/.rbenv \
  &&  echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc \
  &&  echo 'eval "$(rbenv init -)"' >> ~/.bashrc

ENV HOME /home/jenkins # Change this dir as needed.
ENV PATH "$HOME/.rbenv/bin:$HOME/.rbenv/shims:$PATH"
ENV RUBY_VERSION 2.6.3

RUN mkdir -p "$(rbenv root)"/plugins \
    && git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

RUN rbenv install $RUBY_VERSION

RUN rbenv global $RUBY_VERSION && rbenv versions && ruby -v

# RUN curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash # Uncomment this to get rbenv to validate your setup.

答案 5 :(得分:0)

如果您想使用bundle install之类的东西并且不将基本映像与Ubuntu这样的预安装devtools一起使用,则需要安装以下软件包:

RUN apt-get update && apt-get install -y ruby ruby-dev ruby-bundler build-essential
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*