web-dev-qa-db-ja.com

docker-compose.ymlでホストポートをバインドするときに、サービスを複数のコンテナーにスケーリングできません

マイクロサービスは1つのコンテナーで実行されています。そのサービスをホストポート8082にバインドし、docker-composeを使用してこのマイクロサービスを起動しました。 docker-compose scaleコマンドを使用して3コンテナーにスケーリングしたいのですが、次のエラーが発生します-

エラー:2の場合、ネットワークでエンドポイントcomposetest_nginx_2を作成できませんでしたcomposetest_default:0.0.0.0:8082のバインドに失敗しました:ポートはすでに割り当てられています

エラー:3の場合、ネットワークでエンドポイントcomposetest_nginx_3を作成できませんでしたcomposetest_default:0.0.0.0:8082のバインドに失敗しました:ポートはすでに割り当てられています

これに対する解決策は何でしょうか?

9
suraj chopade

3つのコンテナのポートをホストの同じポートにバインドすることは想定されていません。

あなたができることは設定することです:

  • 1つのロードバランサーコンテナ(コンテナのポートXXXXをホストのポート8082にバインドします)

  • 3つのサービスコンテナ(ポートをロードバランサーに公開)

bindは、1つのポートのみをホストにバインドします。また、exposeはリンクされたコンテナにのみポートを公開するため、複数のコンテナからポートを取得できます。

参照:

https://www.brianchristner.io/how-to-scale-a-docker-container-with-docker-compose/

https://github.com/vegasbrianc/docker-compose-demo/blob/master/docker-compose.yml

10
Tommy

nginxなどを使用している場合は、docker-genコマンドを使用してNginxの構成を自動更新できます。

詳細については、こちらをご覧ください: https://deployeveryday.com/2016/09/28/composed-docker-environments-scale.html

0
Arun Sangal