Docker Composeを使用してコンテナーの実行を同期するにはどうすればよいでしょうか?
私が解決しようとしている問題は、Docker Compose が Y を開始する前にコンテナー X を待機することに似ています。Docker Compose を使用して複数のコンテナーを起動します。これらはすべて同じホスト上で実行されます。そのうちの 3 つは PostgreSQL、Liquibase、および Tomcat で実行される Web アプリケーション サーブレットです。PostgreSQL と Web アプリケーション コンテナーは両方とも長時間実行されますが、Liquibase コンテナーは一時的なものです。コンテナーは順番に開始するだけでなく、各コンテナーは前のコンテナーが使用可能になるか完了するまで待機する必要があります。. 特に、PostgreSQL サーバーは、Liquibase コンテナーを実行する前に SQL コマンドを処理する準備ができている必要があり、データベース スキーマが有効な状態であることを確認するために、Web アプリケーションが開始する前に Liquibase スキーマ移行タスクを完了する必要があります。
特定の条件をポーリングする 2 つのラッパー「待機」スクリプトを使用してこの同期を実現できることを理解しています(これが唯一の利用可能なオプションである可能性があります)。 2 つ目は、Web アプリケーションの直前に実行され、特定のデータベース オブジェクトの存在をポーリングできます。ただし、プロセス同期と同様に、コンテナー同期は一般的な問題であり、より一般的なプロセス間通信とセマフォのような同期プリミティブで対処できると思います. Docker Compose は、このような同期メカニズムから最も恩恵を受ける可能性がありますが、Docker コンテナーでも、コンテナー内に複数の同期ポイントを確立する場合などに、それらが役立つ場合があります。