【问题标题】:Cannot see Java Maven Tomcat-plugin web application in web browser在 Web 浏览器中看不到 Java Maven Tomcat 插件 Web 应用程序
【发布时间】:2017-08-05 14:54:27
【问题描述】:

我想在 docker 容器中构建和运行我的 Java Maven Web 应用程序。我尝试了以下命令:

 docker run -it --name my_project -v "$PWD":/usr/src/my_project -w /usr/src/my_project maven:3.5.0-jdk-8 mvn clean install tomcat7:run

它正确复制资源,运行 maven clean install(成功构建)并使用我的 pom.xml 中包含的 tomcat7-maven-plugin 运行。

一切正常,日志非常类似于在我的 Windows 机器上本地构建和运行:

不幸的是,在网络浏览器上出现“连接被拒绝”的信息。

什么可能导致问题?: - 我的应用程序是特定于 Windows 的,不能在 linux 上运行? - 应用程序完全是应用程序并且正在运行,但代理配置有问题或未配置端口?

我该如何继续 - 调查日志?尝试在 windows docker 容器上构建?

附:我使用 Windows docker 的 Kitematic 应用程序检查容器的 IP。

【问题讨论】:

  • 如果将-p 9998:9998 参数添加到docker run 命令会发生什么变化?
  • @mgyongyosi 格兰芬多得 10 分。现在访问 url 可用且可见。我更进一步 - 谢谢:)

标签: java maven docker containers maven-tomcat-plugin


【解决方案1】:

可能是三个问题。一旦你使用了-w 而不是-v

 docker run -it --name my_project -v "$PWD":/usr/src/my_project -w /usr/src/my_project maven:3.5.0-jdk-8 mvn clean install tomcat7:run

我在发帖时以为是错字。接下来你没有在你的机器上发布端口

 docker run -p 9998:9998 -it --name my_project -v "$PWD":/usr/src/my_project -w /usr/src/my_project maven:3.5.0-jdk-8 mvn clean install tomcat7:run

这会将端口9998(右侧)从您的容器映射到您本地主机上的端口9998

第三个也是最后一个,您的 INFO 日志显示正在收听localhost:9998。不是很好。因为这意味着您的战争只监听容器内部产生的流量,而不是来自容器外部的流量。您需要配置您的战争,以便它侦听容器内的所有接口并且绑定应该是0.0.0.0:9998

【讨论】:

  • “仅在容器内产生的流量”是什么意思?我希望使用 docekr 在本地构建应用程序,但实际上它应该可以访问本地 Windows 文件(在容器外)。我应该向容器中添加任何东西还是配置一些东西?
  • 收听 localhost 意味着您可以收听任何 localhost 上下文。在VM内部它是VM,在容器内部它是容器本身。因此,如果您的 a 在您的 VM 或容器中带有 bash 的终端中,那么 localhost 将指向它。此外,侦听 localhost 的应用程序只会响应从该上下文引发的请求。这就是为什么你总是需要听0.0.0.0。关于需要文件系统,您需要使用卷挂载。查看 docker run 命令的 --volume-v 标志
猜你喜欢
  • 2012-01-11
  • 2011-01-16
  • 1970-01-01
  • 2011-08-04
  • 2011-10-26
  • 2015-03-24
  • 2011-07-07
  • 2010-10-30
  • 2013-02-20
相关资源
最近更新 更多