我为 apache nifi 1.22.0 创建了一个 docker 镜像,在 dockerfile 中公开了端口:
EXPOSE 8080 8443 10000 8000
然后我启动一个 docker 容器:
docker run -it --cpus=4 --user root --memory=10g --publish 8080:8080 \
--hostname nifi-0 --network my-net \
....some volumes...
apache-nifi:1.22.0
容器启动成功,但无法访问UI。我尝试了所有可能的 URL,但没有任何效果:
localhost:8080/nifi
nifi-0:8080/nifi
localhost:8000/nifi
nifi-0:8000/nifi
查看控制台日志,我观察到这一点:
NIFI_WEB_PROXY_HOST was not set but NiFi is configured to run in a secure mode. The NiFi UI may be inaccessible if using port mapping or connecting through a proxy.
这就是我无法访问nifi UI的原因吗?如果是,我该如何设置NIFI_WEB_PROXY_HOST?
编辑:
我将其添加到我的 docker run 命令中,现在我可以访问 localhost:8080/nifi 上的 UI。
-e NIFI_WEB_HTTP_PORT='8080'
虽然当我检查 docker 内的 nifi.properties 时,我看到了这个:
....
nifi.web.http.host=nifi-0
nifi.web.http.port=8080
nifi.web.http.network.interface.default=
#############################################
nifi.web.https.host=
nifi.web.https.port=
nifi.web.https.network.interface.default=
nifi.web.https.application.protocols=http/1.1
nifi.web.jetty.working.directory=./work/jetty
nifi.web.jetty.threads=200
nifi.web.max.header.size=16 KB
nifi.web.proxy.context.path=
nifi.web.proxy.host=
.....
nifi.web.http.host现在是nifi-0,nifi.web.http.port是8080。早些时候,这两个地方都是空的。另外,nifi.web.proxy.host 仍然是空的。
不知何故,所有这些结合得很好,使其对我有用。
'nifi-0:8080/nifi' 不起作用。
如果您尝试访问在本地主机上运行的服务,只需将
nifi.web.http.host
属性设置为 0.0.0.0
或 localhost
而不是 nifi-0
。
重新启动你的docker并测试
curl http://localhost:8080/nifi
这是在安全模式下运行 NiFi 的 docker-compose.yml 示例:
version: "3.9"
services:
nifi:
image: apache/nifi:1.22.0
hostname: nifi
container_name: nifi
restart: on-failure
environment:
- NIFI_WEB_HTTPS_PORT=9443
- SINGLE_USER_CREDENTIALS_USERNAME=admin
- SINGLE_USER_CREDENTIALS_PASSWORD=ctsBtRBKHRAx69EqUghvvgEvjnaLjFEB
- NIFI_HOME=/opt/nifi/nifi-current
- NIFI_LOG_DIR=/opt/nifi/nifi-current/logs
- NIFI_TOOLKIT_HOME=/opt/nifi/nifi-toolkit-current
- NIFI_PID_DIR=/opt/nifi/nifi-current/run
- NIFI_BASE_DIR=/opt/nifi
ports:
- '9443:9443'
healthcheck:
test: ["CMD", "curl", "-f", "https://localhost:9443/health"]
interval: '30s'
timeout: '20s'
retries: 3
start_period: '5s'
volumes:
- data:/var/data
- nifi:/opt/nifi
volumes:
data:
nifi: