【问题标题】:Can't connect to embedded undertow server running inside docker container无法连接到在 docker 容器内运行的嵌入式 undertow 服务器
【发布时间】:2019-10-19 02:05:22
【问题描述】:

我正在尝试在 docker 容器内运行嵌入式 undertow 服务器。当我在我的机器上运行以下代码 sn-p 时,我可以访问返回“Hello World”的 http 端点。但是当我在 docker 容器中运行相同的代码时,我无法到达端点。

public class HelloWorldServer {

    public static void main(final String[] args) {
        Undertow server = Undertow.builder()
                .addHttpListener(8080, "localhost")
                .setHandler(new HttpHandler() {
                    @Override
                    public void handleRequest(final HttpServerExchange exchange) throws Exception {
                        exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
                        exchange.getResponseSender().send("Hello World");
                    }
                }).build();
        server.start();
    }
}

我从以下链接http://undertow.io/undertow-docs/undertow-docs-1.4.0/index.html找到了上面的例子

这些是我为构建和运行容器而执行的所有以下命令。

docker build -t z .
docker run -d -p 8080:8080 -t z

【问题讨论】:

  • 你能用你的IP地址而不是本地主机来访问你机器上的http api吗?如果没有,请尝试使用 .addHttpListener(8080, "0.0.0.0")
  • 你试过docker run --net=host -d -p 8080:8080 -t z吗?
  • @GaneshKarewad 它有效。但我不想绑定我所有的网络接口。

标签: java docker undertow


【解决方案1】:

undertow 服务器无法将 http 侦听器与我的机器 IP 绑定。 而不是指定

localhost

我改成

InetAddress.getLocalHost().getHostAddress()

它将侦听器与我机器的 IP 绑定。 现在我可以到达终点了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-02
    • 2022-01-16
    • 2021-07-02
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多