我正在尝试在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.