当前位置: 首页 > 知识库问答 >
问题:

在tomcat docker容器中部署Java应用程序

翟展
2023-03-14

我正在尝试将.war、.aar、.xml和.properties文件部署到tomcat docker容器。我使用了下面的Dockerfile和基本的tomcat docker映像。

FROM tomcat:7
RUN rm -rf /usr/local/tomcat/webapps/ROOT
COPY test-3.0.war /usr/local/tomcat/webapps/ROOT.war
COPY testone-3.0.aar /usr/local/tomcat/webapps/axis2/WEB-INF/services/
COPY ./conf/context.xml /usr/local/tomcat/conf/
COPY ./conf/server.xml /usr/local/tomcat/conf/
CMD ["catalina.sh", "run"]

到目前为止一切正常。它提取war文件并启动容器内的应用程序。

但是现在我需要像这样添加/编辑“/usr/local/tomcat/webapps/root/web-inf//”和“/usr/local/tomcat/webapps/root/js”中的一些属性文件。

COPY ./conf/applicationurl.properties /usr/local/tomcat/webapps/ROOT/WEBINF/classes/
COPY ./conf/memcache.properties /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/
COPY ./conf/um.properties /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/
COPY ./conf/pe.properties /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/
COPY ./conf/check.js /usr/local/tomcat/webapps/ROOT/js

将这些文件复制到正在运行的tomcat容器中的最佳方法是什么?我尝试用上面的Dockerfile作为基础映像构建多一个docker映像,并将前面提到的文件复制到容器内的目标文件夹,但它删除了所有提取的war文件夹/文件,并且只复制了/usr/local/tomcat/webapps目录内的文件。

我只需要添加一些属性文件,它不应该删除webapps目录中现有的提取文件夹。

有人能帮我解决这个吗?

共有1个答案

太叔小云
2023-03-14

另一个选择是仅解压缩war文件(您可以将其重命名为zip,因为它确实是一个zip文件)。

所以:

  1. 解压警告
  2. 对子文件夹进行所需的所有修改。
  3. 重新压缩
  4. 重命名为.war
  5. 按常规部署

我正在通过DockerFile脚本操作WAR。在我的例子中,它部署GeoServer+将插件JARS添加到/web-inf/lib

简而言之,如下所示解压缩:unzip geoserver-2.10.2.war-d geoserver_war/

希望对某人有帮助

 类似资料:
  • 我有一个使用tomcat服务器运行的java应用程序。现在我需要在jboss服务器上运行相同的应用程序。我是jboss新手,我尝试过在jboss中部署war文件,但没能做到。 我不知道应用程序要在jboss上运行需要做什么更改。任何人请引导我。 非常感谢。

  • 我有一个简单的应用程序构建为docker图像(ubuntu),并把它放入docker容器。它有几个卷附加到它。我想将此容器推送到Azure AppServiceLinux。我尝试了几个选择,但没有成功。 > Azure CLI创建web应用程序并将容器推送到Azure容器注册表,然后将其部署到web应用程序。 给出错误。 将容器上传到,并更新Web应用容器设置以将此容器加载到Web应用中。 给出或

  • 我想在服务器上部署一个spring mvc中的Java web app build。我使用的是MilesWeb服务器。在尝试将应用程序部署到服务器后,我收到了以下异常日志,描述如下:“服务器遇到内部错误,导致无法满足此请求”。我需要帮助来找出我做错了什么。 你可以检查这个链接后,点击提交我得到上面的错误

  • 我是专门使用golang和微服务架构的DevOps新手。 我想知道go应用程序是否应该部署在容器中(Docker)。在这种情况下,我有一个用微服务架构构建的系统。例如,这里有两个web服务,A和B。另外,我还有另一个web服务器作为这两个服务前面的网关。 A和B都需要访问数据库,例如MySQL。A处理表A,B处理表B。 我知道在Go中,源代码被编译成一个可执行的二进制文件。因为我这里有3个服务,所

  • 我正在使用Hibernate从Karaf 2.3连接到PostgreSQL。4容器,当我部署包时,有一个异常是javax。命名。NameNotFoundException osgi:service/javax。sql。DataSource/“(osgi.jndi.service.name=jdbc/postgresds)。 这是我的坚持。xml文件 这是我的blueprint.xml文件: 这是我

  • 我有这个问题,一个应用程序耳朵有这个错误,我是一个weblogic12c的新管理员,有人帮助我吗??? 这是一个标准安装Weblogic 12c