在tomcat docker容器上提供War文件

时间:2019-03-17 00:25:51

标签: docker tomcat

我正在尝试在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文件时,我是否缺少某些东西?

1 个答案:

答案 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"