我正在尝试在 docker 容器上运行我的 java 应用程序。我在本地使用 tomcat 服务器并且工作正常。我是 java/tomcat/docker 的新手,所以我可能会遗漏一些非常简单的东西,但我假设只需将我的本地 war 文件指向 /usr/local/tomcat/webapps
就足够了.
这是我的 docker-compose.yml
tomcat-dev:
image: tomcat:8.5.38
environment:
- TOMCAT_USERNAME=root
- TOMCAT_PASSWORD=root
ports:
- "8888:8080"
volumes:
- /target/npmanager.war:/usr/local/tomcat/webapps/npmanager.war
mysql-dev:
image: mysql:8.0.2
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: npmanagercd
volumes:
- /mysql-data:/var/lib/mysql
ports:
- "3308:3306"
我可以在 webapps 目录中看到 npmanager.war
文件,但我无法访问我的应用程序。当我从本地安装的 tomcat 运行它时,我的本地主机仍然显示 tomcat 页面,而不是我看到的“Hello, World”。
关于在 tomcat 上部署 war 文件,我是否遗漏了什么?
最佳答案
好的,所以我终于让它工作了。如果对其他人有帮助,我想在这里发布这个答案,但老实说,我不确定我是否完全理解它。
我必须为 tomcat 镜像创建一个单独的 Dockerfile:
FROM tomcat:8.5.38
ADD ./target/npmanager.war /usr/local/tomcat/webapps/
CMD chmod +x /usr/local/tomcat/bin/catalina.sh
CMD ["catalina.sh", "run"]
然后在 docker-compose.yml 中构建该图像
version: '3'
services:
tomcat-dev:
build: .
environment:
TOMCAT_USERNAME: root
TOMCAT_PASSWORD: root
ports:
- "8888:8080"
mysql-dev:
image: mysql:8.0.2
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: npmanager
volumes:
- /mysql-data:/var/lib/mysql
ports:
- "3308:3306"
关于docker - 在 tomcat docker 容器上提供 war 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55202796/