当前位置: 首页 > 面试题库 >

在Docker映像中部署WAR文件的正确方法

周麒
2023-03-14
问题内容

在Docker容器中部署Java项目的Docker方法是什么?

我是否会将战争复制到webapps中:

FROM jetty:9.2.10
MAINTAINER Me "me@me.com"
ADD ./target/*.war /var/lib/jetty/webapps/ROOT.war

还是我拿爆炸的战争文件:

FROM jetty:9.2.10
MAINTAINER Me "me@me.com"
ADD ./target/app-0.1.0.BUILD-SNAPSHOT /var/lib/jetty/webapps/ROOT

通常,如果它是一个普通的容器,则将部署密封的war文件,但是对于docker,这意味着每次您进行较小的更改时都会推送10-20MB的文件,而添加展开的war只会推动差异-.class文件已经改变。

部署爆炸式战争而不是战争档案有不利之处吗?


问题答案:

我想知道您如何使用图片。在构建映像时添加20MB文件几乎是即时的。可以让您以某种方式在部署期间构建映像,就像AWS为您提供Dockerfile一样。

无论如何,我认为这取决于您的部署方式。如果要在自己周围移动图像,则添加.war文件和展开的WAR目录之间不会有太大区别。我想说什么对您来说方便。但是,如果您有时从Docker有时从.war(可能会错过Docker的某些方面)运行应用程序,那么您最好一直使用.war。

如果要部署到类似AWS Elastic
Beanstalk(从存储库中提取映像的东西)之类的东西,而该对象需要Dockerfile或Dockerrun.aws.json文件,则将映像与实际部署的对象分开是有意义的(或到目前为止,这对我来说是有意义的)。这样可以使容器保持不变,而更新应用程序只需将.jar
/ .war文件复制到正确的位置(这也可能会遗漏Docker的部分内容;)。

我一直在做的是在Docker
Hub上创建基础映像,然后使用Dockerrun.aws.json文件映射到我的应用程序中。这样,AWS无需构建我的映像,只需将其拉出即可。这样可以更快,更省钱($)。但这确实将我的应用程序与映像分开,这在某些情况下可能会使部署复杂化。但是,由于我的映像非常稳定,因此通常只将.jar文件,Dockerrun.aws.json文件和Shell脚本捆绑到.zip中,然后将其上传到AWS。我认为很容易。

我的Dockerfile非常简单,实际上是我的Spring Boot应用程序所需的全部:

FROM java:8
VOLUME /tmp
VOLUME /app
EXPOSE 8080
ENTRYPOINT ["sh","/app/app.sh"]

您可以执行类似的操作,并使用-
v选项等将卷映射到您的应用程序,环境设置等。顺便说一下,此映像在Docker Hub上可用。



 类似资料:
  • 在docker容器中部署java项目的docker方法是什么? 我是否将战争复制到网络应用程序中: 还是我拿爆炸的战争文件: 通常情况下,如果密封的war文件是一个普通的容器,人们会部署它,但对于docker,这意味着每次做一个小更改时都会推送一个10-20MB的文件,而添加爆炸的war只会推送差异,即。已更改的类文件。 部署爆炸战争而不是战争文件有什么缺点吗?

  • 我会告诉你我所做的所有步骤。我还会给出一些图片,使我的问题更容易理解。任何推荐都会很好。 有必要说我用 Tomcat 6(安装在C:\Program Files\Apache Software Foundation\Tomcat 6.0) 1)创建一个新的Web应用程序项目(GWT)。它在Jetty上运行良好 3)第一个问题(我认为也是最主要的问题):WAR文件没有转到C:\Program Fil

  • 5.使用cmd重新启动tomcat。 “信息:部署web应用程序目录C:\apache-tomcat-7.0.77\webapps\MyProject Jun 07,2017 4:50:19 PM org.apache.catalina.startup.hostconfig deployDirectory信息:web应用程序目录C:\apache-tomcat-7.0.77\webapps\MyP

  • 我是部署新手,我已经将jar文件作为一个包,我应该如何在prod服务器中进行部署? 我的prod服务器基本上是运行在AWS上的EC2机器 我应该运行java-jar“jar文件”吗?这是prod服务器的实践方式吗? 我应该将. jar文件打包到ears/war并部署在tomcat/jboss服务器中吗? 感谢您的帮助!

  • 我试图创建一个jboss/wildfly的映像,可以用于war部署,下面是我用于创建映像的docker文件。 但是,当我使用“docker run-p9990:9990 hello”命令运行容器时,jboss服务器正在启动,但部署文件夹中的war文件没有部署。 docker文件 添加独立的完整poc。xml/opt/jboss/wildfly/standalone/configuration/ 添

  • 当我尝试在jboss server 7.0中部署war文件时,它显示以下错误。请告知。 异常日志: