没有 WAR 文件的 Tomcat 9 部署

问题描述 投票:0回答:1

我正在尝试使用从war文件中提取的应用程序目录在tomcat中部署web应用程序,但tomcat正在删除应用程序目录。

出于安全原因,我不允许将war文件复制到tomcat webapps目录中。因此,在构建 docker 映像时,我将从 war 文件中提取的文件夹复制到 tomcat webapps 目录,并验证该文件夹已复制。但是在构建 docker 映像后,我运行了容器并检查了 webapps 文件夹内容。提取的应用程序文件夹不存在。它以某种方式被删除了。如何解决这个问题?

java tomcat deployment tomcat9
1个回答
0
投票

目录

├── Dockerfile
└── helloworld (WAR to directory)

Dockerfile

FROM tomcat:9.0.90-jdk17-temurin-jammy

COPY helloworld /usr/local/tomcat/webapps/helloworld

EXPOSE 8080

ENTRYPOINT []

CMD ["catalina.sh", "run"]

建立形象

docker build -t docker-helloworld-war:0.0.1 .
       
docker tag docker-helloworld-war:0.0.1 docker-helloworld-war:latest

运行容器

docker run -it --rm -p 8080:8080 docker-helloworld-war

检查

打开另一个终端

运行命令

docker ps

控制台:

ONTAINER ID   IMAGE
41fc3edda46c   docker-helloworld-war   ...

运行命令:

docker exec -it 41fc3edda46c bash

在容器中:

root@41fc3edda46c:/usr/local/tomcat# cd webapps
root@41fc3edda46c:/usr/local/tomcat/webapps# ls
helloworld

注意事项:

在我的第一个版本中,我使用了

COPY helloworld /usr/local/tomcat/webapps

结果,helloworld的所有内容都出现在

webapps
目录中,而不是
webapps/helloworld
目录中。

所以我将第二个版本更正为如下:

COPY helloworld /usr/local/tomcat/webapps/helloworld
© www.soinside.com 2019 - 2024. All rights reserved.