A imagem do Docker instalou várias versões do ruby

tcnksm / docker-rbenv

Isso pode gerar uma imagem Docker que é instalada em várias versões do ruby ​​por rbenv.

A imagem é enviada para docker.io, tcnksm / rbenv , para que você possa usá-la em breve.

$ docker pull tcnksm/rbenv

ou no Dockerfile,

FROM tcnksm/rbenv

Dockerfile

Descreverei este Dockerfile e como editá-lo para sua própria imagem.

FROM base

MAINTAINER tcnksm
"https://github.com/tcnksm"

# Install packages for building ruby
RUN apt
-get update
RUN apt
-get install -y --force-yes build-essential curl git
RUN apt
-get install -y --force-yes zlib1g-dev libssl-dev libreadline-dev libyaml-dev libxml2-dev libxslt-dev
RUN apt
-get clean

# Install rbenv and ruby-build
RUN git clone https
://github.com/sstephenson/rbenv.git /root/.rbenv
RUN git clone https
://github.com/sstephenson/ruby-build.git /root/.rbenv/plugins/ruby-build
RUN
./root/.rbenv/plugins/ruby-build/install.sh
ENV PATH
/root/.rbenv/bin:$PATH
RUN echo
'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh # or /etc/profile

# Install multiple versions of ruby
ENV CONFIGURE_OPTS
--disable-install-doc
ADD
./versions.txt /root/versions.txt
RUN xargs
-L 1 rbenv install < /root/versions.txt

# Install Bundler for each version of ruby
RUN echo
'gem: --no-rdoc --no-ri' >> /.gemrc
RUN bash
-l -c 'for v in $(cat /root/versions.txt); do rbenv global $v; gem install bundler; done'

Basicamente, este Dockerfile faz o que você faz quando instala várias versões do ruby ​​sozinho no ambiente Ubuntu.

  1. Extraia a imagem base do Ubuntu de docker.io ( FROM base)
  2. Instale pacotes para construir ruby ​​( RUN apt-get ...)
  3. Clone rbenv
  4. Clone de construção de rubi
  5. Defina a variável ambiental para rbenv ( ENV PATH /root/.rbenv/bin:$PATH)
  6. Defina o comando bash login para ler a configuração rbenv ( RUN echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh)
  7. Adicione versions.txtqual é a versão de ruby ​​definida que você deseja instalar
  8. Instale o Ruby com rbenv install
  9. Instale o bundler para cada versão

Se você deseja instalar outra versão (desta vez, apenas 1.8.7, 1.9.3, 2.0.0), basta editar version.txt.

Além disso, se você deseja instalar rubygems básicos por Gemfile, adicione abaixo,

ADD ./Gemfile /root/Gemfile
RUN bash
-l -c 'cd /root/; for v in $(cat rubies.txt); do rbenv global $v; bundle install; done'

Para construir a imagem,

docker build -t USERNAME/IMAGENAME .

Para empurrá-lo para docker.io,

docker login
docker push USERNAME
/IMAGENAME

Referência