マイクロサービスは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のバインドに失敗しました:ポートはすでに割り当てられています
これに対する解決策は何でしょうか?
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
nginxなどを使用している場合は、docker-gen
コマンドを使用してNginxの構成を自動更新できます。
詳細については、こちらをご覧ください: https://deployeveryday.com/2016/09/28/composed-docker-environments-scale.html