containerに対してserverspecでテストができるようになりました。containerに対してテストしたいdockerを扱う以上、containerは複数立てるのが普通です。今回は複数のcontainerを立てた時にそれぞれのcontainerに対してテストする方法について書いていきます。containerに対してテストしたいdocker-composeで複数のcontainerを管理する前回のrubyを動かすcontainerに加えて今回はnginxのcontainerを動かしていきます。ruby用のDockerfileと実行するrubyスクリプトを配置します。world!'そして、以下のようなdocker-compose.ymlを配置します。worldと表示されるはずです。containerを別で追加します。nginxというディレクトリを切り、nginx用のDockerfileと表示するための適当なindex.htmlを作ります。serviceの記述も追加しましょう。私の環境では80をすでに使っていたため、nginxのportは8080にforwardしておきます。"8080:80"appとwebのcontainerを立ち上げます。containerも同時に立ち上がりました。http://localhost:8080にアクセスしてnginxが立ち上がっているか確認しておきます。containerに対してserverspecでテストを実行できる環境を作りましょう。Gemfileを追加します。containerに対してserverspecを実行するためにrakeも使います。'rake'specディレクトリは以下のように作成します。spec/roles以下に各container毎のテストを書いていきます。endendまた、spec_helper.rbは以下のように書きます。docker_imageに指定するimageは環境変数を指定するようにします。containerを切り替えることができます。ENV['DOCKER_IMAGE_NAME']さて、最後にRakefileを作成します。containerを定義することで、それぞれのcontainerに対してserverspecを実行できます。taskで使う名前、roleはspec/roles以下に配置するファイル名を指定します。serverspec実行時のENVにそれぞれのimage名を渡してあげます。endendこれで、spec/roles以下に置かれたファイルごとにserverspecが実行されます。