【问题标题】:Can't reach localhost:8080 while running docker image运行 docker 映像时无法访问 localhost:8080
【发布时间】:2017-09-07 05:51:44
【问题描述】:

我使用 gradle 开发了一个小型 Java 演示 Web 应用程序,我想用 WildFly 对其进行 dockerize。我已按照here 的指示进行操作。

Dockerfile 是:

FROM jboss/wildfly
MAINTAINER Me <me@qmail.com>

RUN /opt/jboss/wildfly/bin/add-user.sh admin Admin#70365 --silent

ADD build/libs/my-demo.war /opt/jboss/wildfly/standalone/deployments/

当我使用 Docker 启动映像并浏览 localhost:8080localhost:9990 时,我得到一个 This site can’t be reached

然而,当我使用gradle appRun 时,我的应用程序在localhost:8080 上成功运行。

缺少什么?

我在 Windows 10 家庭版下。我在 Ubuntu 16 下尝试过另一台笔记本电脑并面临同样的问题。

【问题讨论】:

  • localhost 不能以这种方式工作。它将在您的 Window envi 上查找服务器,而不是进入正在运行的容器中。可以分享一下你使用的 docker run 命令吗?
  • 我是docker run -it my-demo
  • 可能存在一些问题。您可以将以下行添加到您的 docker 文件中,看看它是否有效:EXPOSE 8080 9990

标签: java docker web-applications localhost


【解决方案1】:

三件事:

第一 基础镜像 EXPOSEs 只有端口 8080,所以要能够访问端口 9990,您需要将 EXPOSE 9990 添加到您的 Dockerfile 或将 --expose 9990 添加到您的 docker runcall。

第二 你没有发布你的命令行调用,所以我只能猜测,但你需要将容器端口映射到主机端口,例如(包括额外的暴露端口)

docker run --expose 9990 -p 9990:9990 -p 8080:8080 -it my-demo

第三次 如果您使用 docker-machine,就我记得的 Win 10 home 的情况而言,您的应用程序不会在 localhost 上,而是在 docker-machine VM 的 IP 上。你可以通过调用找出是哪个IP

docker-machine ip

在 linux 上,添加端口映射后,您的应用程序将位于 localhost:PORT。

【讨论】:

猜你喜欢
  • 2017-01-06
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多