[docker]dockerコンテナに対して自動テストするならdockerspec


前回のngx_mrubyの記事でdockerコンテナ化すれば簡単、とか言いましたが、
mrubyも使って複雑な挙動となったnginxをどうテストするべきか?

そう、自動テストですね。

packerでビルドイメージ作成する場合などはserverspecを利用できます。
docker imageに対してもdocker-apiを利用すればできるんですが、
ここでは個人的にdockerspecを推したい。日本語の記事もないので。

なお、serverspec + docker-apiについては以下の記事が詳しいです。
http://tsub.hatenablog.com/entry/2016/06/25/222508
http://yukihir0.hatenablog.jp/entry/2015/02/16/171317

Dockerspecの良さ

  1. Dockerfileの文法自体についてのテスト、imageの振る舞いについてのテストがまとめてかける
  2. 入れるgemが少ない、導入が楽
  3. serverspec, infrataster, capybaraの3種類のテストコードを同じgemで利用可能になる

Dockerspecの使い方

公式に書いてあるままですが以下。

1. Dockerspecのgemをインストールする

dockerspecはgemなので

2. テストを書く

Dockerspecでは、テストのスタイルは
Serverspec, Infrataster, Capybara の3つの中から好きなものを使えます。

例えばserverspecなら

といった具合。
簡単に導入できるのでぜひお試しください。

追記

職場の先輩から「数時間溶けた!」というご報告をいただいたissueを紹介します。
内容としては、CMDやENTRYPOINTをDockerfileに記述していると、dockerspecが動かないというものです。
これについての開発側の見解は、「dockerspecする用と本番用でDockerfileを別にしてくれ」という回答らしいです。ご参考まで。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする