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 を再構築します。
手順:
- spec を書く
- package の存在は
packageでテストできます https://serverspec.org/resource_types.html#package
- package の存在は
- Dockerfile を書く
RUN コマンドという命令でコンテナ内でコマンドを実行できますyum -y installというコマンドでパッケージを自動インストールできます
ヒント: LAMPは次の要素で構成されています:
- Linux: Amazon Linux
- Apache: httpd package
- MySQL: mysql package
- PHP: php package
パッケージは yum search $name で検索できます