LoginSignup
6

More than 3 years have passed since last update.

rbenv が入った docker image を作りたい人生だった

Last updated at Posted at 2019-07-17

はじめに

rbenv の入った docker image を作りたかった。
OS は ubuntu を使うことにした。

Dockerfile

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.lockBUNDLED WITH の version と合わせる必要があったので version を固定にしている。

終わりに

このコンテナで社で負債になっている chef-repo を動かしたかったんだけどビクともしなかった(笑

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6