2017-02-12 16 views
0

我想在Docker中運行我的Web應用程序(編寫於java/scala)。因此,作爲一個結果,我創建了以下泊塢窗文件:已啓動的Web應用程序的Docker和http url

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"] 

應用確實成功啓動時,我與docker run命令運行它:

[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 

我不明白,搬運工圖像虛擬機上運行,​​所以我決定找出虛框機的IP地址:

docker inspect 7cf588493b41 | grep IP 

,並返回"IPAddress": "172.17.0.2"

但是既不0.0.0.0localhost172.17.0.2都可以訪問,但是當我沒有泊塢窗運行一切(命令行)做的一切工作。 您能否指定我的應用程序可以訪問哪個地址?

以防萬一:我使用的OS X.

感謝您的幫助。

回答

1

要多克爾之外可用的,兩個條件需要滿足:

  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 

在上述所有情況下,你已經綁定的本地端口現在應該回答localhost上,即

http://localhost:8080/

+0

非常感謝你,先生。像魅力一樣工作,解釋也很有幫助。我在提交問題後發現了關於'-p'的問題:)但是對於任何開始使用docker的人來說,這個答案肯定是有用的。 – tkachuko