2017-07-18 77 views
0

我想Containerize一個Web應用程序,它是一個WAR文件,Postgres作爲數據庫,Tomcat作爲Server。Dockerizing Web應用程序(WAR文件)

這樣做的過程是什麼?

我使用以下dockerfile:

FROM tomcat:8-jre8 MAINTAINER lpradel 
RUN echo "export JAVA_OPTS=\"-Dapp.env=staging\"" > /usr/local/tomcat/bin/setenv.sh 
COPY ./application.war /usr/local/tomcat/webapps/staging.war 
CMD ["catalina.sh", "run"] 

回答

0

寫爲每個應用程序dockerfile。 例如:在tomcat服務器docker鏡像上建立一個dockerfile,複製warfile並在dockerfile的cmd部分啓動tomcat。

對於postgres,您應該可以使用現有的圖像。

+0

我嘗試了相同的過程,但運行容器後特定的URL沒有運行。 –

+0

然後發佈您的dockerfile,以便人們可以幫助您。 – herm

+0

一般結構看起來很好。雖然我不確定您將戰爭複製到的文件夾是否是正確的文件夾(usr/local ..)。確保容器中的文件系統按照您的設想構建。 啓動容器後,您可以執行docker檢查containername/id以查看容器的日誌。這應該會幫助你找到錯誤。你也可以這樣做容器停止 – herm

0

更新答案:

您所使用的dockerfile是正確的。這應該準備一個tomcat圖像,它有你想要的web應用程序。不過你可能想要connect那個tomcat容器和postgress容器。

更簡單的連接多個容器的方法是使用docker-compose文件。要使用docker-compose,請參閱docker-compose#build

原來的答覆 您可以在/usr/local/tomcat/webapps/name_of_your_file.war在Tomcat容器安裝WAR文件內的容器。這將使得war文件能夠被tomcat容器自動部署。

順便說一句,我正在做類似的過程,並使用mysql數據庫。看看我的deployment file可能對您有所幫助。

+0

@ShahidaliKhan如果你在你的問題中發佈了dockerfile,這對其他人也會有幫助。由於難以瀏覽答案並尋找問題的細節。 – Ayushya

+0

我正在使用以下部署文件。 '從Tomcat:8- jre8 MAINTAINER lpradel RUN回聲 「出口JAVA_OPTS = \」 - Dapp.env =分期\ 「」> /usr/local/tomcat/bin/setenv.sh COPY ./application。 war /usr/local/tomcat/webapps/staging.war CMD [「catalina.sh」,「run」]' –

+0

我提到的部署文件是一個bash腳本,用於設置必要的環境,如下載數據庫文件,並提取其他文件。雖然['docker-compose.yml'](https://github.com/reactome/container/blob/develop/docker-compose.yml)用於構建容器並運行它們。 – Ayushya

相關問題