无法连接到在Docker容器中运行的嵌入式Underwow服务器

时间:2019-06-03 13:46:06

标签: java docker undertow

我正在尝试在docker容器中运行嵌入式underwow服务器。当我在机器上运行以下代码片段时,我可以点击返回“ 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

1 个答案:

答案 0 :(得分:0)

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

localhost

我更改为

InetAddress.getLocalHost().getHostAddress()

将侦听器与本机的IP绑定。 现在我可以击中终点了。