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.
- Extraia a imagem base do Ubuntu de docker.io (
FROM base
) - Instale pacotes para construir ruby (
RUN apt-get ...
) - Clone rbenv
- Clone de construção de rubi
- Defina a variável ambiental para rbenv (
ENV PATH /root/.rbenv/bin:$PATH
) - Defina o comando bash login para ler a configuração rbenv (
RUN echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh
) - Adicione
versions.txt
qual é a versão de ruby definida que você deseja instalar - Instale o Ruby com
rbenv install
- 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