我正在尝试使用从war文件中提取的应用程序目录在tomcat中部署web应用程序,但tomcat正在删除应用程序目录。
出于安全原因,我不允许将war文件复制到tomcat webapps目录中。因此,在构建 docker 映像时,我将从 war 文件中提取的文件夹复制到 tomcat webapps 目录,并验证该文件夹已复制。但是在构建 docker 映像后,我运行了容器并检查了 webapps 文件夹内容。提取的应用程序文件夹不存在。它以某种方式被删除了。如何解决这个问题?
├── Dockerfile
└── helloworld (WAR to directory)
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