2015-01-07 147 views
6

最近幾天我花了很多時間挖掘docker。我對開發中可能與生產環境相同的環境的可能性印象深刻!用Docker設置Java開發環境

此刻我想從小處着手並開始加強開發過程。我們正在開發部署在tomcat上的Java應用程序。開發人員正在使用IDE和IntelliJ等IDE。

在開發過程中,您可以在IDE中配置tomcat環境,以便您可以自動部署和調試代碼。因此,tomcat的基本目錄必須可用來設置。

目前我有一個docker debian映像,並在/ opt/tomcat上安裝了tomcat。

我現在希望能夠將containers/opt/tomcat目錄的內容鏈接到我的主機中的一個目錄。 不幸的是,功能似乎並不存在。使用-v選項,您只能在容器中掛載主機目錄,而不能以其他方式掛載。

目前我看到的唯一解決方案是掛載容器的webapps目錄並將我的war文件放在這裏,這在我看來非常不利。

您必須手動啓動/重新啓動tomcat,只能進行遠程調試,您的IDE控制檯中沒有日誌。

那麼,有沒有人有任何想法優化使用docker的Java Webapp開發的開發工作流?

+2

這仍然看起來並不像它在視線真正解決問題。我知道docker對隔離環境和所有環境都很棒,但我真的希望我們可以在本地Docker容器上開發時使用本機IDE調試器,而不是遠程調試器。每次我對jsp或某個java類進行更改時,我都不想坐在那裏重新部署應用程序,但效率不高。 – openscope

+2

我完全和你在一起。我想在我的IDE中配置我的運行時環境,並且還可以將日誌發送到我的控制檯,而無需手動打包軟件。 – daniel

+0

根據我的經驗,運行docker + tomcat設置的最簡單方法是使用嵌入式tomcat。因此,不是運行一個tomcat並部署一個war文件,而是創建一個包含tomcat的遠程jar並運行它。主要優點是:您可以在開發和生產中調試/運行相同的設置,創建Docker鏡像非常簡單。我使用spring-boot作爲樣板材料,但這是可選的。它也可以用maven來實現。你會對這樣的設置感興趣嗎? – Jan

回答

1

您可能需要在同一個容器中運行Eclipse和Tomcat,但是我一定會試着讓它們先在兩個單獨的容器中運行。也許從這個base image開始,並嘗試使用共享卷將其鏈接到Tomcat映像。

+1

嘿,在相同的容器內安裝IDE不是一個真正的選擇,因爲我想在生產(未來)中重新使用該容器。我也不想爲IDE創建容器,因爲開發人員應該使用他想要的任何IDE,而不管他想要什麼操作系統。 – daniel

+1

這就是爲什麼我推薦使用2容器方法。這樣,您可以將Tomcat容器鏈接到開發中的IDE容器。 –

+0

但我不想讓容器內的IDE – daniel

-1

如果我正確理解你的問題,爲什麼不使用-v選項來掛載war文件本身。這對我使用wildfly來說沒問題。

基本上,我用maven構建戰爭並將地圖target/myapp.war改爲/opt/wildfly/myapp.war。然後,無論何時我在應用程序中進行更改,我都會運行mvn clean package和應用程序容器,看到戰爭發生了變化,重新部署。

現在,這是利用wildfly的部署掃描程序,但可能仍然適用於tomcat。如果沒有,也許你可以運行一個爆炸戰爭的tomcat,然後將build文件夾target/myapp安裝到tomcat上的webapps文件夾中。

+1

一般而言,您可以使用tomcat自動重新部署,但在現實生活中,這會產生比解決它更多的問題。通常會導致內存泄漏或Web應用程序的奇怪行爲... – daniel