当前位置: 首页 > 知识库问答 >
问题:

在tomcat docker容器上提供war文件

司空瑾瑜
2023-03-14

我试图在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"

我可以看到npmanager。war文件,但我无法访问我的应用程序。我的本地主机仍然显示tomcat页面,而不是从本地安装的tomcat运行时看到的“Hello,World”。

在Tomcat上部署战争文件有什么遗漏吗?

共有1个答案

终育
2023-03-14

好吧,我终于成功了。我想在这里发布这个答案,如果它能帮助其他人,但老实说,我不确定我是否完全理解它。

我必须为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"
 类似资料:
  • 我正在尝试部署一个java api,它基本上带有。docker容器中的war fie inside/tomcat/webapps/directory。我能够复制这本书。位于其中的Artifactory中的war文件。现在docker容器中的tomcat结构是:tomcat/webapps/api。war 问题是,在我将war文件复制到那里之后,我不知道java和tomcat是如何工作的,以便war

  • 我尝试将这个项目部署到AWS弹性豆茎:https://github.com/coralproject/talk,dockerfile公开端口5000,我也定义了环境变量,所有这些变量都使用端口5000。 可能相关的日志: /var/log/eb-activity.log cat://var/app/current/dockerrun.aws.json:没有这样的文件或目录8C17e6ddb0f84

  • 我将我们的web应用程序移动到docker compose部署(Django、DRF、AngularJS)。 Docker现在看起来很稳定,一切都很顺利。 我想: 与您确认,我正在遵循有关应用程序配置文件的最佳做法 知道“卷文件”是否实际上是绑定装载,这是不推荐的 我已经设法使用环境变量和docker-comment秘密读取从Django文件,它的工作原理。缺点是环境变量仅限于简单的字符串,在发送

  • 我已经准备好了我的新Liferay网站,并试图在真实环境中进行测试。我刚刚成功地在服务器上安装了Tomcat Liferay捆绑包,并复制了。根据一些论坛和评论的指示,将war文件放入tomcat旁边的部署目录;但在访问URL后,我仍然会看到默认的Liferay页面,我的页面不会被显示。我在这里做错了什么? 提前谢谢!

  • 我正在尝试将Mongo作为容器组的一部分部署到Azure容器实例上。为此,我使用一个带有文件共享的存储帐户来持久化mongo数据。无法将卷装载到默认位置,因此我将其装载到其他位置,并使用--db path标记启动mongod。使用下面的CLI full命令,这一切都可以正常工作。 然而,当我想将所有这些命令转换为YAML配置文件时,它就不起作用了。Mongo崩溃,出现未知文件或目录错误。如果在没有

  • 来自。NET和Node的我真的很难弄清楚如何将这个阻塞的MVC控制器转移到一个非阻塞的WebFlux注释控制器?我已经理解了这些概念,但是没有找到合适的异步Java IO方法(我希望返回一个Flux或Mono)。