2015-11-06 105 views
2

我正在嘗試使用Docker構建JAVA Web應用程序。我正在做一個碼頭容器來部署和運行應用程序。我是初學者。所以我開始使用java的小應用程序(jar),它工作正常。我爲Java Web應用程序(戰爭)的一些變化,創造了Dockerfile的是如下項目:如何爲JAVA Web應用程序構建Docker容器

Dockerfile 
    --------------------------------------------------- 
    FROM java:8 

    RUN apt-get update 
    RUN apt-get install -y maven 

    WORKDIR /code 
    ADD pom.xml /code/pom.xml 
    ADD src/main/webapp/WEB-INF/web.xml /codes/rc/main/webapp/WEB-INF/web.xml 
    RUN ["mvn", "dependency:resolve"] 

    ADD src /code/src 
    RUN ["mvn", "package"] 
    CMD ["usr/lib/jvm/java-8-openjdk-amd64/bin/java", "-war", "target/techpoint.war"] 
    ---------------------------------------------------- 

構建成功,但是當我運行應用程序 - 它說 「無法識別的選項:-war |錯誤:無法創建Java虛擬機|錯誤:發生了致命異常,程序將退出「 並且當我用」-jar「替換」-war「 - 它表示」沒有主清單屬性, /myapp.war「

有人可以告訴我如何使JAVA web應用程序(戰爭)兼容wi Docker部署過程。這意味着應該使用實際的Dockerfile(包含命令)來構建和運行應用程序?

+1

您不能運行.war webapp。你可以像tomcat一樣將它掛載到服務器上。請參閱[鏈接](http://trimc-devops.blogspot.com/2015/03/running-docker-applications-apache.html) – clsbartek

+3

而不要喊Java :) –

回答

1

您需要一個Web服務器或像tomcat或Jboss(以及其他許多應用程序服務器)的應用程序服務器容器來部署和運行基於Java的Web應用程序。您的「techpoint.war」文件需要複製到特定文件夾,具體取決於每個Web服務器。例如,如果您使用的是Tomcat,那麼您可以將其複製到/ webapps文件夾。 Tomcat將提取並部署war文件。 您可以將以下內容添加到DockerFile中。

FROM tomcat:8.5.11-jre8 
COPY /<war_file_location>/techpoint.war /usr/local/tomcat/webapps/techpoint.war 

您可以使用docker build命令構建圖像,並從創建的圖像啓動容器。

docker build -t techpoint. 
docker run -it --rm -p 8091:8080 techpoint 

現在Tomcat會提取並部署您的war文件。如何訪問部署的應用程序取決於您的應用程序的webroot。例如,

http://<ip_address>:8091/techpoint/index.html 
相關問題