如何为JAVA Web应用程序构buildDocker容器

我正在尝试使用Docker构build一个JAVA Web应用程序。 我正在做一个docker容器来部署和运行应用程序。 我是初学者。 所以我开始与小POC的Java应用程序(jar),这是工作正常。 我对JAVA Web应用程序(war)进行了一些更改,并为该项目创build了一个Dockerfile,如下所示:

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 |错误:无法创buildJava虚拟机|错误:发生致命exception程序将退出”当我用“-war”replace“-jar” – 它说“没有主要清单属性,在目标/ myapp.war”

有人可以告诉我如何使JAVA Web应用程序(战争)与Docker部署过程兼容。 这意味着什么应该是实际的Dockerfile(与命令),使build立和运行应用程序成为可能?

您需要一个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命令构build图像,并从创build的图像启动容器。

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

现在,Tomcat将提取并部署您的war文件。如何访问已部署的应用程序取决于您的应用程序的webroot。 例如,

 http://<ip_address>:8091/techpoint/index.html