リモート Docker のキャッシュエラー - 最初の数個のテストしか実行されない

テストスイートで、Docker ブートストラップレース状況に陥ることがあります。 テストスイートは、必要なすべてのサービスがブートストラップを完全に終了するまで開始しません。 これには通常、コンテナの単純なスタートアップよりも実行のほうが多く含まれることに注意してください。 一部の DB イメージは、コンテナの開始時にデフォルトのデータベースとテーブルを作成します。 Selenium コンテナでは、ブラウザーを起動するために多少の時間を要することがあります。

コンテナのブートストラップ処理を管理するツールとして、dockerize: https://github.com/jwilder/dockerize をおすすめします。 `-wait` サブコマンドは、スリープループでコマンドを実行し、ブートストラップが完了しているかテストします。 それぞれのコンテナのブースストラップが完了したことをテストするため、適切なコマンドが何かを判定する必要があります。

例: https://discuss.circleci.com/t/prevent-race-conditions-by-waiting-for-services-with-dockerize/11215

 

他にも Wait Port というユーティリティが便利です:https://github.com/dwmkerr/wait-port

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています

コメント

0件のコメント

ログインしてコメントを残してください。