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

war文件如何在docker容器上的tomcat中创建目录

虞唯
2023-03-14

我正在尝试部署一个java api,它基本上带有。docker容器中的war fie inside/tomcat/webapps/directory。我能够复制这本书。位于其中的Artifactory中的war文件。现在docker容器中的tomcat结构是:tomcat/webapps/api。war
问题是,在我将war文件复制到那里之后,我不知道java和tomcat是如何工作的,以便war文件使用api目录下的META-INF、WEB-INF目录创建api的目录结构。api是如何实现的。war创建api目录?我以为是在开始卡特琳娜之后。但显然不是。这是我在dockerfile末尾的dockerfile部分(previuos部分并不重要,因为tomcat官方dockerfile是否正在构建图像):

RUN curl -u user:pass -O "http://artifactory.xxx.com:443/artifactory/xx-api/xxapi.war"
RUN mv /usr/local/tomcat/xxapi.war /usr/local/tomcat/webapps/ 
RUN rm -rf /usr/local/tomcat/webapps/docs && rm -rf /usr/local/tomcat/webapps/examples \
&& rm -rf /usr/local/tomcat/webapps/host-manager $$ rm -rf /usr/local/tomcat/webapps/manager
RUN ls -la /usr/local/tomcat/webapps/
EXPOSE 8080
CMD ["catalina.sh", "run"]

这非常有效,战争被复制到tomcat目录和catalina下。她跑得很成功。我需要知道在这一切之后,战争是如何创建目录结构的。现在我只有战争档案。

非常感谢。

08-Aug-2018 16:26:51.927localhostorg.apache.catalina.startup.HostConfig.deployWAR错误部署Web应用程序归档[/usr/local/tomcat/webapps/gp_searchapi.war]java.lang.IllegalStateExctive: ContainerBase.add子:启动:org.apache.catalina.LifeitycleExctive:未能启动组件[Standard ardEngine[Catalina]. Standard ardHost[localhost].标准上下文[/gp_searchapi]]在org.apache.catalina.core.ContainerBase.add儿童内部(ContainerBase.java:758)在org.apache.catalina.core.ContainerBase.add儿童(ContainerBase.java:730)在org.apache.catalina.core.标准ost.add儿童(标准ost.java:734)在org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:985)在org. apache. catalina. startug HostConfig$DeployWar. run(HostConfig. java: 1857)在java. utili. con电流。执行器$RunnableAdapter. call(Executors. java: 511)在java. utili. con电流。未来任务。运行(FutureTask. java: 266)在java. utili. con电流。线程池执行器。运行器(ThreadPoolExecutor. java: 1149)在java. utili. con电流。线程池执行器$Worker. run(ThreadPoolExecutor. java: 624)在java. lang。线程运行

共有1个答案

闾丘京
2023-03-14

默认情况下,当您启动服务器时,tomcat将解压war文件来部署它。

从外观上看,您只构建了docker映像,并且正在映像构建内部执行RUN ls-la /usr/local/tomcat/webapps/

因此,当您启动最近构建的映像时,tomcat将启动(因为您将默认的CMD定义为execcatalina.sh run)。

您可以使用docker run命令启动新图像:

docker run -it --rm -p 8080:8080 <image_name>:<image_version>

你可以使用

docker logs container_name

还请注意,您不需要使用tomcat构建映像,您可以使用docker hub的官方映像作为基础映像

 类似资料:
  • 我试图在docker容器上运行我的java应用程序。我在本地使用tomcat服务器,它工作正常。我是java/tomcat/docker的新手,所以我可能会错过一些非常简单的东西,但我认为只要将我的本地war文件指向就足够了。 这是我的docker-compose.yml 我可以看到文件,但我无法访问我的应用程序。我的本地主机仍然显示tomcat页面,而不是从本地安装的tomcat运行时看到的“H

  • 问题内容: 创建战争文件(使用eclipse)以在tomcat上运行的最佳实践是什么?教程,链接,示例受到高度赞赏。 问题答案: 你可以使用Ant来设置,编译,WAR和部署你的解决方案。 然后,你可以在Eclipse中执行一键操作以运行该Ant目标。以下是每个步骤的示例: 前提条件 我们假设你的代码组织如下: :Java文件,属性,XML配置文件 :你的JSP文件 :运行时所需的任何JAR :你的

  • 任务是用Java和Docker构建并部署一个简单的Hello World-Web-应用程序。它应该打印出一个你好的世界!在浏览器中输入IP地址和服务器端口时。我已经在localhost和服务器上使用了以下代码: 在localhost上,我正在“webapps”目录中创建一个名为“root”的新文件夹。我正在与Tomcat的原始“root”目录交换它。在localhost上,我只有“web-inf”

  • 我试图使用Oxalis,这是一个通过特定的AS2协议发送和接收UBL文档的应用编程接口。安装指南可在https://github.com/difi/oxalis.中找到。预要求Java1.8、Maven 3. x和Tomcat 9.0。我的问题是,在安装指南的说明结束时,我获得了一个oxalis.war文件(此外,我已经尝试做其他指南,你可以在http://mmnclk.com/peppol-ac

  • 我在使用WAR文件将web应用程序从Eclipse部署到Linux上的Tomcat服务器时遇到了问题。我使用的是Tomcat 7.0.53。在本地部署时,我可以创建指定的文件夹路径,这些路径放入文件夹共享中,并将文件放置在这些位置。当试图通过Tomcat服务器上部署的WAR执行这些过程时,不会创建该文件夹共享中的目录,也不会放置文件。通过日志记录,我知道这些文件夹目标和文件是创建的。这背后有什么可

  • } 我正在使用spring boot,并尝试用一个为数据源创建JNDI上下文的嵌入式tomcat启动: 如果删除@ImportResource,我的应用程序就可以正常启动。我可以连接到tomcat实例。我可以检查我所有的执行器endpoint。使用JConsole,我可以连接到应用程序,我可以在MBeans中看到我的数据源(Catalina->Resource->Context->“/”->Loc