2016-06-24 5 views
0

同じアプリケーションを実行している同じVMに複数のドッカーイメージを展開する予定です。私の知る限りでは、webappポートをドッカーコンテナに公開する必要があります。しかし、春の起動時に "server.port = 0"を使用して "ランダム"サーバーポートを使用する予定がある場合、実行時にそのランダムポートをどのように公開しますか?ドッキングステーションを使用したスプリングブートランダムサーバーポートの公開

- = - = 2番目の質問は、春のブートアプリケーションは、ホストVMまたはドッキング用のコンテナスペースで利用可能なランダムなポートを選択しますか?

+1

コンテナごとに1つのアプリケーションがある場合は、アプリケーションごとに同じポートを使用できます。ドッカーコンテナには、ホストシステムや他のコンテナとは独立した独自のポートがあります。次に、コンテナを実行するときにホストポートからコンテナポートへのマッピングを指定します。 – dunni

答えて

1

スプリングブートは、ビルド時ではなく、実行時にポートを割り当てます。つまり、アプリケーションをネイティブまたはドッカーコンテナで起動するまで、スプリングブートによって選択されたポートは使用できません。

DockerがDocker Container内のポートを選択するという2番目の質問に答えます。したがって、実際にはすべてのポートがOSで使用されているポート以外で利用可能になります。

これら2つのステートメントを組み合わせる場合は、特に制限がない限り、ポートを手動でスプリングブートアプリケーションに指定し、実行時にdocker runに公開する必要がありますか?

+0

'docker run'コマンドの実行時に、特定のポートを公開する必要はありません。 docker runがコンテナを起動し、コンテナの開始時に、spring boot appが起動します。 –

+0

私はどこかでも読んで、 'net = host'オプションが私のために働くかもしれません。 OSのネットワークスタックがコンテナの環境に公開されます。 –

+1

@dunniのコメントは正確です。同じポート上でアプリケーションを起動し、ドッカーがホスト上のランダムなポートでサービスを公開できるようにすることができます。 'docker run -p 3000 my_image'は、ドッカーがランダムなポートでサービスを公開するようにします。 – Shibashis

関連する問題