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 绑定。而不是指定
localhost
我改为
InetAddress.getLocalHost().getHostAddress()
它将侦听器与我机器的 IP 绑定。现在我可以到达终点了。
推荐阅读
- jenkins - 如何在 Jenkins Groovy 中设置位置参数
- apache-nifi - geoIpEnrich 处理器 NiFi
- python - 为什么 Numpy 在计算当前响度时有时会返回 NaN 值?
- angular - 在多个功能模块上使用来自守卫的 relativeTo
- python - 我使用 Telethon 收到 Channel Invalid 错误
- javascript - 如何从子组件内部后退整个页面
- php - 使用无限参数将所有流量重定向到 index.php
- python - TypeError:从字典列表创建数据框后没有要绘制的数字数据
- batch-file - Windows 批处理脚本用它的第一行重命名 PDF 文件(循环可能)?
- databricks - 变量值必须传入 Databricks 直接 sql 查询而不是 spark.sql(""" """)