Help us understand the problem. What is going on with this article?

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

はじめに

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 を動かしたかったんだけどビクともしなかった(笑

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした