Docker Hubに追加されていた。
Freeプランで300分程度。
1分未満が切り上げられて消費されるのはBuild Cloudと同じ。
テスト用の(DBなどの)コンテナーを作成、接続、破棄。
テストプログラム向けのフレームワーク。
本番のパッケージでは利用しない。
実行基盤がクラウド化されたもの。
触れてみる
まず、アプリをダウンロードしてインストールする。
クライアント判定せずにmacOSのリンクが表示されるので、適切なOSを選ぶ。
Download the free Testcontainers Desktop app
次に、サンプルプログラムの用意。
開発環境が整っているものを選び、リンク先の説明通りgit cloneする。
テスト実行前に、Testcontainersのアイコンをクリックして、Testcontainers cloudを選んでおく。
その後、説明通りにテストを実行。
AWSを利用しているようだ。
[testcontainers.org 00:00:00.11] Connected to Docker: Host: tcp://127.0.0.1:54438/ Server Version: 82+testcontainerscloud (via Testcontainers Desktop 1.18.0) Kernel Version: 6.5.0-1024-aws API Version: 1.46 Operating System: Ubuntu 22.04.4 LTS Total Memory: 30.81 GB [testcontainers.org 00:00:04.65] Docker container 4d5f5780456a created [testcontainers.org 00:00:04.77] Start Docker container 4d5f5780456a [testcontainers.org 00:00:05.05] Wait for Docker container 4d5f5780456a to complete readiness checks [testcontainers.org 00:00:05.09] Docker container 4d5f5780456a ready [testcontainers.org 00:00:05.31] Docker container 1e39d394b62c created [testcontainers.org 00:00:05.32] Copy tar archive to "/" to Docker container 1e39d394b62c [testcontainers.org 00:00:05.46] Start Docker container 1e39d394b62c [testcontainers.org 00:00:05.73] Wait for Docker container 1e39d394b62c to complete readiness checks [testcontainers.org 00:00:06.95] Docker container 1e39d394b62c ready [testcontainers.org 00:00:07.43] Delete Docker container 1e39d394b62c
ローカル環境にはpullされておらず、クラウド環境で実行されたことが確認できる。
TestcontainersでRun containers locallyが選ばれている場合、(当たり前だが)プルされたイメージが表示される。
> docker images REPOSITORY TAG IMAGE ID CREATED SIZE
尚、既存プロジェクトに組み込みたいなら、ここを読んで実装。
Supported languages and prerequisites
の下あたりに言語別の実装方法が書いてある。
ローカル環境でのテストについて
ハードウェアのリソースが豊富であり、Dev ContainersやDocker Composeで環境を整えている人には恩恵がない。
それどころか、イメージのキャッシュが効かなくなるため、実行速度は低下する。
一方、ハードウェアのリソースが貧弱で余裕がない場合、テスト用コンテナーの負荷をクラウドに持って行けるのでメリットがある。
GitHub ActionsなどのCIについて
サービスコンテナーが整っている場合は、無理に変えてもメリットはない。
フレームワークについて
Testcontainersの思想は良いと思うが、
既存サービスと競合する部分が多く、今のところ積極的に採用しないと思う。