【发布时间】: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 它有效。但我不想绑定我所有的网络接口。