はじめに
rbenv の入った docker image を作りたかった。
OS は ubuntu を使うことにした。
Dockerfile
FROM ubuntu:xenial
# Require to install ruby
RUN apt-get update && \
apt-get install -y \
git \
build-essential \
libssl-dev \
libreadline-dev \
zlib1g-dev
# Install rbenv
RUN git clone https://github.com/rbenv/rbenv.git ~/.rbenv && \
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc && \
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
ENV PATH /root/.rbenv/shims:/root/.rbenv/bin:$PATH
# Install ruby-build & ruby
RUN git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build && \
~/.rbenv/bin/rbenv install 2.5.1 && \
~/.rbenv/bin/rbenv global 2.5.1
# Initiarize ruby encording
ENV RUBYOPT -EUTF-8
# Install bundler
RUN ~/.rbenv/bin/rbenv exec gem install bundler -v 1.16.3
やってること
Require to install ruby
下記、ruby・rbenv のダウンロードおよびコンパイルに必要なモジュールのインストール。
- git
- build-essential
- libssl-dev
- libreadline-dev
- zlib1g-dev
Install rbenv
リポジトリからソースを落としてくる
git repository から clone してパスを通している。
https://github.com/rbenv/rbenv#basic-github-checkout
明示的にパスを通す
~/.bashrc
に書き加えただけだと GitLab CI で利用しようとしたときにデフォルトでパスが通らなかったので ENV PATH ...
で明示的に指定している。
Initiarize ruby encording
ruby のエンコーディングを UTF-8 としている。
デフォルト だと US-ASCII になっており bundle install
が動かなかった。
Install ruby-build & ruby
また、 docker build
している最中はインストール後でも rbenv のパスが通ってないので ~/.rbenv/bin/rbenv exec ...
みたいなノリでフルパスを指定しなければならなかった。。
業務都合でデフォルトの version は 2.5.1 としている。
Install bundler
bundle install
したかったので bundler をいれた。
Gemfile.lock の BUNDLED WITH
の version と合わせる必要があったので version を固定にしている。
終わりに
このコンテナで社で負債になっている chef-repo を動かしたかったんだけどビクともしなかった(笑