2015-11-06 151 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 
相关问题