我正在尝试在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文件时,我是否缺少某些东西?
答案 0 :(得分:1)
好的,所以我终于开始工作了。我想在这里发布此答案是否有帮助,但是说实话我不确定我是否完全理解它。
我必须为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"