如何为JAVA Web应用程序构建Docker容器
问题描述:
我正在尝试使用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(包含命令)来构建和运行应用程序?
答
您需要一个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
您不能运行.war webapp。你可以像tomcat一样将它挂载到服务器上。请参阅[链接](http://trimc-devops.blogspot.com/2015/03/running-docker-applications-apache.html) – clsbartek
而不要喊Java :) –