java - 无法连接到在 docker 容器内运行的嵌入式 undertow 服务器

标签 java docker undertow

我正在尝试在 docker 容器内运行嵌入式 undertow 服务器。当我在计算机中运行以下代码片段时,我可以访问返回“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

最佳答案

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

localhost

我改为

InetAddress.getLocalHost().getHostAddress()

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

关于java - 无法连接到在 docker 容器内运行的嵌入式 undertow 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56428689/

相关文章:

java - AspectJ 和 PostSharp 之间的功能差异是什么?

java - 在 Java Web 服务器中使用 letsencrypt 证书

java - WIldfly/Undertow UT010029 流已关闭

Docker:每个作为容器运行的客户端服务器程序无法使用 POSIX 套接字 API 相互通信

ruby-on-rails - Rails 5+、WebPacker 和 Docker 开发工作流程

haskell - 如何在不使用套接字文件的情况下将堆栈指向 docker 守护进程启动?

java - undertow 编译错误

java - JScience 测量单位库与 android 不兼容

windows - 不带参数的Ant设置platforms.JDK_1.6.home

java - 命令行上的 Maven 依赖项更新