在tomcat docker容器上提供war文件

mcvgt66p  于 2023-10-19  发布在  Docker
关注(0)|答案(1)|浏览(135)

我想在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文件,我是否遗漏了什么?

y3bcpkx1

y3bcpkx11#

好吧,我终于修好了。我想把这个答案贴在这里,如果它能帮助其他人的话,但老实说,我不确定我是否完全理解它。
我必须为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"

相关问题