.logbook

学んだことを書き綴る、言わば航海日誌です。

はじめてDockerfileを書いてみた(ruby開発環境構築)

前回の記事にてひとまずdockerをインストールし、Docker HubのDockerイメージを取得・起動することができた。

今回は自分自身でオリジナルのDockerイメージを作成することとした。ruby開発環境の構築を想定して、Dockerfileを作成してみた。

作業は以下の記事を参考にして実施した。

いまさら聞けないDocker入門(3):Dockerfileとdocker buildコマンドでDockerイメージの作成 (1/2) - @IT

Dockerfileの書き方

Dockerfileの書き方は至って単純である。以下の記事が参考になる。

qiita.com

inokara.hateblo.jp

Dockerfileを作成

Dockerfileを作成する前にベースとするイメージを選出する必要がある。今回はruby開発環境ということで、rbenvをインストール済の環境である「polleverywhere/rbenv」をベースとさせていただいた。

このイメージのREADMEを見ると、rubyをインストール済イメージを作成する場合のDockerfileのサンプルが掲載されている。従って、これを参考にDockerfileを作成した。

FROM polleverywhere/rbenv

MAINTAINER Yuhei Okazaki <y.2.okazaki@gmail.com>

ENV RUBY_VERSION 2.1.3

RUN rm -rf $HOME/.rbenv/plugins/ruby-build \
  && wget -O - https://github.com/sstephenson/ruby-build/archive/master.tar.gz \
  | tar zxf - \
  && mkdir -p $HOME/.rbenv/plugins \
  && mv ruby-build-master $HOME/.rbenv/plugins/ruby-build

RUN apt-get update -q \
  && apt-get -q -y install curl autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev \
  && rbenv install $RUBY_VERSION \
  && rbenv global $RUBY_VERSION \
  && apt-get purge -y -q curl autoconf bison build-essential libssl-dev zlib1g-dev \
  && apt-get autoremove -y \
  && rm -rf /var/lib/apt/lists

RUN apt-get -q update \
  && apt-get -q -y install git gcc vim-nox make \
  && rm -rf /var/lib/apt/lists

RUN gem install --no-ri --no-rdoc bundler
RUN rbenv rehash

Dockerイメージの生成

以下のコマンドでイメージが生成される。(".(ドット)を忘れないように注意")

$ sudo docker build -t yuuu/ruby-dev .
(省略)

Dockerイメージの起動

生成に成功したら早速起動してみる。指定したバージョンのRubyやGit, Vimがインストールされていることが確認できる。

$ sudo docker run -i -t yuuu/ruby-dev /bin/bash
root@29c0f89dda08:/# ruby -v
ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-linux]
root@29c0f89dda08:/# git --version
git version 1.9.1
root@29c0f89dda08:/# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04) 
root@29c0f89dda08:/# vim
(VIMが起動する)