如何在docker上安装Ruby



我正在尝试在docker上安装ruby。我可以安装1.9版本,但不可能安装2.2.0及以上的最新版本。实际上,我正试图在docker上设置葫芦。我试过了。每当我试图在里面安装calabash android时,都会得到错误

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

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

# Pull base image.
FROM dockerfile/ubuntu
# Install Ruby.
RUN 
  apt-get update && 
  apt-get install -y ruby

这个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"

这使得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

您可以开始查看以开头的dockerfile

# 2016
FROM ruby:2.3.0
# 2020
# Import your ruby version
FROM ruby:2.7.1
# Install bundler gem
RUN gem install bundler
# Assign a work directory
WORKDIR /work

这将使用已经安装了ruby的docker镜像ruby。

2020版本来自";使用docker的Ruby版本管理";来自Arjun Das,ArMD在评论中提到。

声誉很低,所以我无法在线评论(潜伏了这么多年,叹气),但如果其他人在寻找将旧ruby版本安装到docker的方法时遇到这种情况,我发现@grosser的答案非常有用-它在尝试通过RVM安装根本不会的地方起作用,至少对我来说是这样。

然而,我建议使用推荐的方法来安装ruby构建——以下对我有效:

<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构建的最新情况,而不是像之前@grosser的评论中那样硬编码到2018-03-29版本。

如果你想使用像bundle install这样的东西,并且不使用像Ubuntu这样预装的开发工具的基本映像,你需要安装以下软件包:

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/*

多亏了@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.

相关内容

  • 没有找到相关文章

最新更新