serverspec の支援で手動でインフラコード構築 - maemichi-monosense/serverspec-handson GitHub Wiki

既存の Dockerfile に spec を書き、さらにBDDしていく

手順

準備

cd docker-image

bundle # install
# amazon という名前でイメージをビルドする (コンテナではない)
docker build . -t amazon

# amazon と命名した image の存在を確認
docker images amazon

# spec 実行
rake spec

この時点では全て成功するはず

Docker container → image

先程は Dockerfile というレシピのようなものから docker image を作成しましたが、実はなくても image は作成できます。 コンテナからイメージを作成する手順を試しましょう。 コンテナ手動構築編の続きとして進めてください。

# コンテナが稼働中でないと作成できないので確認
docker ps

# amazon コンテナから amazon イメージを handmade タグで作成
docker commit amazon amazon:handmade

# handmade タグのイメージがあるはず
docker image amazon

テスト対象のイメージの指定を変更するため、 spec/spec_helper.rb を次のように変更してください。

set :docker_image, 'amazon:handmade'

そして rake spec

テストができたら spec/spec_helper.rb は戻しておいてください。

発展編

このイメージをベースに、更に LAMP 構成を構築してください。TDDとして spec から書いてください 編集するファイルは spec/amazon/sample_spec.rb です。

Dockerfile を編集したあとは、もう一度ビルドを実行して、 image を再構築します。

手順:

  1. spec を書く
  2. Dockerfile を書く
    • RUN コマンド という命令でコンテナ内でコマンドを実行できます
    • yum -y install というコマンドでパッケージを自動インストールできます

ヒント: LAMPは次の要素で構成されています:

  • Linux: Amazon Linux
  • Apache: httpd package
  • MySQL: mysql package
  • PHP: php package

パッケージは yum search $name で検索できます