从 docker-compose 启动时无法访问 NiFi UI

PAN*_*ack 5 docker docker-compose apache-nifi

我一生都无法访问 NiFi Web UI。这让我讨厌安全感。


太长了;我找不到在 docker 容器中启动 NiFi 并仍然访问 UI 的正确方法。这是我尝试过的(8小时):

docker run --name nifi \
  -p 8080:8080 \
  -d \
  apache/nifi:latest
Run Code Online (Sandbox Code Playgroud)

我去localhost:8080/nifi- 超时。同样的127.0.0.1

docker inspect nifi- IP网关是172.20.0.1具有实际IP的172.0.0.2Invalid Host Header和超时。

开始随机尝试一些东西:

# I tried localhost, 0.0.0.0, various IP addresses
docker run --name nifi \
  -p 8080:8080 \
  -e NIFI_WEB_HTTP_HOST=${hostname-here}
  -d \
  apache/nifi:latest
Run Code Online (Sandbox Code Playgroud)

我还docker-compose.yml为我的可能性递减建立了一个完整的堆栈。一切正常,除了:

nifi:
  image: apache/nifi:latest
  hostname: nifi
  depends_on:
    - zookeeper
    - broker
    - schema_registry
    - nifi-registry
  ports:
    - "8080:8080"
Run Code Online (Sandbox Code Playgroud)

没有变化。你能帮助我吗?


更新1

我使用了docker-compose.yml下面评论中链接的存储库中的文件;谢谢@Chaffelson。仍在处理超时问题localhost。所以我用 docker-machine 旋转了一个液滴。

服务启动正常,日志表明 NiFi 注册表和 NiFi 的 Jetty 服务器均已启动。<host ip>:18080/nifi-registry我可以像在本地计算机上一样访问 NiFi 注册表@ 。

我无法访问<host ip>8080/nifi- 我收到invalid host header回复。

所以我添加到docker-compose.yml

environment:
    # Tried both with and without quotes
    NIFI_WEB_HTTP_HOST: "<host-ip>"
Run Code Online (Sandbox Code Playgroud)

Jetty 服务器无法启动。洞察力?


更新2

从日志中,仅使用docker run --name nifi -p 8080:8080 -d apache/nifi:1.5.0

[NiFi Web Server-24] o.a.n.w.s.HostHeaderSanitizationCustomizer Request host header [45.55.36.15:8080] different from web hostname [348146fc286f(:8080)]. Overriding to [348146fc286f:8080/nifi]45.55.36.15主机ip在哪里。

这是我的问题的症结所在。


更新3

ufw在本地计算机上禁用了(防火墙)。我现在可以通过 访问 nifi localhost:8080。实际访问远程主机没有任何进展(这就是这一切的重点)。

Cha*_*son 3

我使用这个文件和类似的 docker compose 文件来进行自动 NiFi Python 客户端测试。它表面上看起来与你的类似,并且在 Ubuntu (Travis-CI) 和我自己的本地 MacBook pro 上运行得非常好。
我建议您尝试将此文件作为已知良好的配置运行,并检查上述内容的“docker log -f nifi”,看看您的环境在启动时是否抛出错误。

NIFI_WEB_HTTP_HOST 和 NIFI_WEB_HTTP_PORT 的环境变量适用于您在 8080 以外的端口上访问 Docker nifi 时,这样您就不会受到主机标头拦截器的影响。我最近向该项目贡献了这些修改,因此,如果您遇到问题,我想知道,以便我可以修复它。