【问题标题】:Can't run webapplication on tomcat using Docker无法使用 Docker 在 tomcat 上运行 web 应用程序
【发布时间】:2017-02-24 04:43:36
【问题描述】:

我试图在我的浏览器上显示我为学校项目创建的 web 应用程序。 首先,我将 Dockerfile 和 .war 文件放在同一文件夹 /home/giorgio/Documenti/dockerProject 中。我在我的 Dockerfile 中写了以下内容:

# Pull base image
From tomcat:7-jre7

# Maintainer
MAINTAINER "xyz <xyz@email.com">

# Copy to images tomcat path
RUN rm -rf /usr/local/tomcat/webapps/ROOT
COPY file.war /home/giorgio/Documenti/apache-tomcat-7.0.72/webapps/

然后我使用 ubuntu shell 中的命令构建了映像:

docker build -t myName /home/giorgio/Documenti/dockerProjects

最后,我已经在 shell 上运行了:

docker run --rm -it -p 8080:8080 myName

现在,一切正常,并且没有显示任何错误,但是当我想从浏览器访问 localhost:8080 时,任何东西都会显示出来,但 tomcat 已经开始运行良好。

对我看不到的可能问题有什么想法吗? 谢谢!

【问题讨论】:

  • 您提到了一个war文件,但是您将一个hello.py文件复制到了容器中。您要部署战争文件吗?
  • docker logs myName 将向您显示容器输出,可能错误正在那里转储
  • 是的,hello.py 只是一个测试。我编辑了这个问题。 @STLMikey 我现在试试,然后在这里发布输出。

标签: file tomcat web-applications docker war


【解决方案1】:

这是你的整个 Dockerfile?

因为您只需删除所有 ROOT 内容(步骤 #3)

然后使用您的应用程序复制 war 文件(步骤 #4) - 可能仅在问题中错误的文件夹应该是 /usr/local/tomcat/webapps/

但是我没有看到任何端点或启动前台应用程序。

我想你需要添加:

CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]

然后运行tomcat。并且是EXPOSE 端口的例程,但是当您使用-p 时,docker 会进行隐式暴露。

所以你的 Dockerfile 应该是这样的:

# Pull base image
From tomcat:7-jre7

# Maintainer
MAINTAINER "xyz <xyz@email.com">

# Copy to images tomcat
RUN rm -rf /usr/local/tomcat/webapps/ROOT

# fixed path for copying
COPY file.war /usr/local/tomcat/webapps/

# Routine for me - optional for your case
EXPOSE 8080

# And run tomcat
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]

【讨论】:

  • 感谢您的回答!然而,似乎什么都没有改变。 localhost:8080 中的相同空白页
  • 是空白页还是找不到页?您的战争应用程序中有任何上下文吗?如果是,您需要使用 localhost:8080/context
  • 您可以测试:localhost:8080/file - 文件名应该是上下文。或用于测试目的的丑陋解决方案COPY file.war /usr/local/tomcat/webapps/ROOT.war 并检查 localhost:8080
猜你喜欢
  • 1970-01-01
  • 2012-08-04
  • 2018-06-05
  • 2017-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
相关资源
最近更新 更多