2017-02-12 3 views
0

ドッカーでWebアプリケーションを実行したいと考えています(java/scalaで書かれています)。開始されたWebアプリケーションのDockerとhttp url

[DEBUG] [02/12/2017 21:28:56.940] [tkachuko-web-system-akka.actor.default-dispatcher-2] [akka://tkachuko-web-system/system/IO-TCP/selectors/$a/0] Successfully bound to /0:0:0:0:0:0:0:0:80 

私は私が決めたのでそのドッキングウィンドウのイメージが仮想マシン上で実行理解してください:確かに私はdocker runコマンドでそれを実行すると正常に起動

FROM java 
ADD 0/backend-assembly-1.1.jar /app/backend-assembly-1.1.jar 
EXPOSE 80 
ENTRYPOINT ["java", "-jar", "\/app\/backend-assembly-1.1.jar", "0.0.0.0", "80"] 

アプリケーション:だから、結果として、私は、次のドッキングウィンドウのファイルを作成しました仮想ボックスマシンのIPアドレスを調べる:

docker inspect 7cf588493b41 | grep IP 

そしてそれは"IPAddress": "172.17.0.2"を返す。

しかし0.0.0.0localhostまたは172.17.0.2どちらもアクセス可能ですが、私は(コマンドラインから)ドッキングウィンドウなしのすべてを実行すると、すべてが作業を行います。 私のアプリケーションにアクセスできるアドレスを指定してください。

念のために:私は、OS Xの任意の助け

感謝を使用しています。

答えて

1

ドッカーの使用可能な外に、2つの条件が満たされる必要がある:

  1. あなたが(EXPOSEを使用して)画像内のポートを露出します。それはすでにそうであるように見えます。

  2. コンテナ内のポートをホスティングシステムのポートにバインドします。あなたはあなたの実行コマンドを含んでいませんが、このようなものでなければなりません。

    docker run -d -p 8080:80 <image-name> 
    

ここで重要なのは、コンテナポートにローカルポートをバインドし-pフラグ、です。

-p local-port:container-port 

-p 80:80    # bind local port 80 to container's port 80 
-p 8080:80   # bind local port 8080 to container's port 80 

必要に応じて、Macのローカルホストにのみポートをバインドすることもできます。上記のすべての場合において

-p 127.0.0.1:8080:80 

は、あなたがバインドされてきたローカルポートは現在、非常に多く、ローカルホスト上のサーすなわち

http://localhost:8080/

+0

おかげで、あなたに答える必要があります。魅力のように動作し、説明は非常に役立ちます。私は疑問を提出した直後に '-p'を見つけました:)しかし、この答えはドッカーを使い始めた人にとっては間違いなく便利です。 – tkachuko

関連する問題