2017-08-05 71 views
0

我想在Docker容器中構建並運行我的Java Maven Web應用程序。我試着用下面的命令:在Web瀏覽器中看不到Java Maven Tomcat插件Web應用程序

docker run -it --name my_project -v "$PWD":/usr/src/my_project -w /usr/src/my_project maven:3.5.0-jdk-8 mvn clean install tomcat7:run 

它正確地複製資源,運行Maven全新安裝(編譯成功),並與被包含在我的pom.xml tomcat7 - Maven的插件運行。

一切工作正常和日誌真的相似構建和當地我的Windows機器上運行:

Run info

不幸的是在Web瀏覽器中存在的信息「連接被拒絕」。

什麼可能導致該問題?: - 我的應用程序是特定於Windows,無法在Linux上運行? - 應用程序是完全的應用程序和運行,但錯誤的是代理配置或端口沒有配置?

我該如何進一步調查日誌?嘗試建立在Windows碼頭集裝箱?

P.S.我使用適用於Windows Docker的Kitematic應用程序來檢查容器的IP。

+0

如果向'docker run'命令添加'-p 9998:9998'參數,所有內容都會更改嗎? – mgyongyosi

+0

@mgyongyosi Gryfiindor 10分。現在訪問網址是可用和可見的。我更進一步了 - 謝謝:) – gooornik07

回答

2

可能有三個問題。一旦您使用-w代替-v

docker run -it --name my_project -v "$PWD":/usr/src/my_project -w /usr/src/my_project maven:3.5.0-jdk-8 mvn clean install tomcat7:run 

這一點我認爲是一個錯字,同時發佈。接下來,您沒有發佈你的機器

docker run -p 9998:9998 -it --name my_project -v "$PWD":/usr/src/my_project -w /usr/src/my_project maven:3.5.0-jdk-8 mvn clean install tomcat7:run 

的端口這會從您的集裝箱港口9998(右側)映射到本地主機端口9998

第三也是最後一個,您的INFO日誌說在localhost:9998上聆聽。不是很好。因爲這意味着你的戰爭只是聽從容器內部產生的流量,而不是從容器外部流出。您需要配置您的戰爭,以便在容器內的所有接口上偵聽,並且綁定應該是0.0.0.0:9998

+0

你是什麼意思「僅在容器內部產生的流量」?我希望應用程序可以使用docekr在本地構建,但實際上它應該可以訪問本地Windows文件(在容器外部)。我應該添加任何東西到容器或配置一些東西? – gooornik07

+1

聽localhost意味着你聽任何localhost上下文。在VM內部,它是一個虛擬機,容器內部是容器本身。因此,如果你的虛擬機或容器內有bash的終端,那麼localhost會指出這一點。同樣,監聽本地主機的應用程序只會響應從該上下文中提出的請求。這就是爲什麼你總是需要聽取'0.0.0.0'。關於需要使用卷裝的文件系統。查看docker run命令的'-volume'或'-v'標誌 –

相關問題