1

Azure IoT Edge を使用して、デプロイ内のコンテナー/モジュールの初期化順序を保証する方法を見つけられませんでした。たとえば、A と B の 2 つのモジュールがあるとします。A はサーバーで、B は A に依存するクライアントです。私の知る限り、A が B より先に起動することを保証する方法はありません。

Azure IoT Edge デプロイ テンプレートは Docker Engine API に準拠していますが、その API を通じて依存関係を適用する方法が見つかりませんでした。回避策として、各コンテナーのコードで実行されているコンテナーについては想定していません。これは機能しますが、追加のコードのオーバーヘッドは理想的ではありません。特に、docker-compose のようなツールを使用すると、初期化順序の強制がかなり簡単になることを考慮してください。

このようなことをしたい (src: https://docs.docker.com/compose/compose-file/ ):

version: "3.7"
services:
  web:
    build: .
    depends_on:
      - db
      - redis
  redis:
    image: redis
  db:
    image: postgres

回避策として、上記の例に従って、webコンテナで次のようなことを行って、依存アクションを実行postgresする前に稼働していることを確認しました。webpostgres

postgresIsUp = False
while not postgresIsUp:
    try:
        pingPostgres()
        postgresIsUp = True
    except PingError:
        print("postgres is not yet running")

もちろん、これは明らかな欠陥のある不自然な例ですが、回避策の要点を示しています。

4

2 に答える 2