Zookeeper サーバーと API のブートストラップ プロセス、および docker-compose を使用して API によって Zookeeper サーバーに書き込まれたデータを消費する必要がある別のプロセスを起動しようとしています。
docker-compose up を実行すると、Zookeeper サーバーが正常に起動し、ブートストラップ API が接続してデータを正常に書き込むことができます。
ここでの制約は、API がデータを飼育係に書き込むのを 2 番目のプロセスが待機する必要があることです。それ以外の場合は、それまで API によってノードが作成されないため、例外が発生します。したがって、docker-compose.ml ファイルのコマンド セクションで、bash コマンドを実行し、プログラムが終了しないように while ループを追加してブートストラップ API を無限に実行し、2 番目のプロセスにスリープ ステートメントを追加しました。 API がジョブを完了するまで待機するようにします。(一種の競合状態処理)。
私が理解したことから、docker-compose は docker-compose.yml ファイルの「リンク」を使用して順序付けを処理しますが、起動する必要がある個々のプロセスの状態は処理しません。つまり、最初のプロセスが正常に終了したら、2 番目のプロセスを開始する必要があります。
これが私のdocker-compose.ymlファイルです-
zookeeper:
image: xyz.com/temp
ports:
- "10000:2181"
bootstrapapi:
image: xyz.com/temp1
command: /bin/bash -c "cd /code; make test_data ZK_HOSTS=zookeeper:2181 CLUSTER=cluster ; while [ true ]; do sleep 5; done"
volumes:
- .:/test
links:
- zookeeper
xyz:
image: def.com/temp2
command: /bin/bash -c "sleep 10;python -m test --zk-hosts=zookeeper:2181 --zk-cluster-path=cluster "
links:
- zookeeper
詳細が必要な場合は、お知らせいただければ幸いです。前もって感謝します。