如何为JAVA web应用程序构建Docker容器

如何为JAVA web应用程序构建Docker容器,java,docker,war,dockerfile,Java,Docker,War,Dockerfile,我试图使用Docker构建一个JAVA web应用程序。我正在制作一个docker容器来部署和运行应用程序。我是初学者。因此,我从运行良好的小型pocforjava应用程序(jar)开始。我对JAVA web应用程序(war)进行了一些更改,并为该项目创建了一个Dockerfile,如下所示: Dockerfile --------------------------------------------------- FROM java:8 RUN apt-ge

我试图使用Docker构建一个JAVA web应用程序。我正在制作一个docker容器来部署和运行应用程序。我是初学者。因此,我从运行良好的小型pocforjava应用程序(jar)开始。我对JAVA web应用程序(war)进行了一些更改,并为该项目创建了一个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 |错误:无法创建Java虚拟机|错误:发生致命异常。程序将退出” 当我将“-war”替换为“-jar”时,它说“target/myapp.war中没有主清单属性”


有人能告诉我如何使JavaWeb应用程序(war)与Docker部署过程兼容吗。这意味着要构建和运行应用程序,实际的Dockerfile(带有命令)应该是什么?

您需要一个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
现在Tomcat将提取并部署war文件。如何访问部署的应用程序取决于应用程序的webroot。比如说,

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

您不能只运行.war webapp。您可以像tomcat一样将其装载到服务器上。看,不要喊Java:)
http://<ip_address>:8091/techpoint/index.html