はじめに
Dockerfile
を作ってみようと思ったら configspec
で Dockerfile
を書き出せるとのことなので試してみた。現状、RedHat
系のコマンドのみが対応となっているとのことだが、今後、整備されて一つの spec
ファイルから複数の OS に対応した Dockerfile
が生成されるようになるのかな。
参考
準備
試した環境
configspec のインストール
gem install configspec --no-ri --no-rdoc -V
configspec-init
カレントディレクトリで configspec-init
を実行する。
configspec-init
以下のように初期設定を行う。
Select a backend type: 1) SSH 2) Exec (local) 3) Dockerfile Select number: 3 + spec/ + spec//001_httpd_spec.rb + spec/spec_helper.rb + Rakefile
今回は Dockerfile
の生成を目的としているので 3
を選択。
spec ファイル
以下のような spec
ファイルが生成されている。
require 'spec_helper' describe package('httpd') do it { should be_installed } end
Dockerfile の生成
rake spec
カレントディレクトリで rake spec
を実行すると Dockerfile
が生成される。
rake spec
以下の出力と共にカレントディレクトリに Dockerfile
が生成されている。
/usr/bin/ruby1.9.1 -S rspec . Finished in 0.00499 seconds 1 example, 0 failures
Dockerfile
の中身を確認する。
RUN yum -y install httpd
おお。
docker build
作成された Dockerfile
を利用して docker build
してみる。ちなみに今回は Dockerfile
の行頭に FROM
でコンテナイメージを指定した。以下は生成されたDockerfile
に FROM centos
を追加したもの。
FROM centos RUN yum -y install httpd
実際に docker build
してみると...
Step 1 : FROM centos ---> 539c0211cd76 Step 2 : RUN yum -y install httpd (中略) ---> Using cache ---> 6804af67a36c
おお。
最後に
configspec
から Dockerfile
を生成することが出来るというのは前述の通り、サーバーのあるべき姿を一つの方法で記述してその記述をもとに複数の OS
のセットアップを抽象化出来るのでではと激しく感じた。