NiFi覆盖nifi.properties中的值

时间:2019-01-21 18:36:50

标签: apache-nifi

我正在docker中运行NiFi,并将所有相关目录安装为卷。我尝试修改nifi.properties文件中的某些设置,特别是添加自定义属性文件。但是,当我重新启动NiFi时,某些属性将恢复为原始值。

这是我当前的nifi.properties文件的一个示例:

nifi.ui.autorefresh.interval=5 sec
...
nifi.variable.registry.properties=

如果我将文件更改为以下内容:

nifi.ui.autorefresh.interval=3 sec
...
nifi.variable.registry.properties=./conf/custom.properties

然后重新启动NiFi,它将打印多行replacing target file /opt/nifi/nifi-current/conf/nifi.properties,然后启动UI。当我再次检查nifi.properties文件时,它看起来像:

nifi.ui.autorefresh.interval=3 sec
...
nifi.variable.registry.properties=

由于某些原因,nifi.ui.autorefresh.interval属性将成功更新,但nifi.variable.registry.properties属性不会成功。

为什么有些价值观拒绝采用,如何让它们在启动过程中生存下来?

2 个答案:

答案 0 :(得分:3)

有些道具只能用ENV vars设置(除了黑客攻击)。如果您看下面的命令,您可以找出来。如您所见, nifi.variable.registry.properties 是其中之一。

cat /opt/nifi/scripts/start.sh | grep prop_replace
prop_replace 'nifi.web.http.port'               "${NIFI_WEB_HTTP_PORT:-8080}"
prop_replace 'nifi.web.http.host'               "${NIFI_WEB_HTTP_HOST:-$HOSTNAME}"
prop_replace 'nifi.remote.input.host'           "${NIFI_REMOTE_INPUT_HOST:-$HOSTNAME}"
prop_replace 'nifi.remote.input.socket.port'    "${NIFI_REMOTE_INPUT_SOCKET_PORT:-10000}"
prop_replace 'nifi.remote.input.secure'         'false'
prop_replace 'baseUrl' "http://${NIFI_WEB_HTTP_HOST:-$HOSTNAME}:${NIFI_WEB_HTTP_PORT:-8080}" ${nifi_toolkit_props_file}
prop_replace 'nifi.variable.registry.properties'    "${NIFI_VARIABLE_REGISTRY_PROPERTIES:-}"
prop_replace 'nifi.cluster.is.node'                         "${NIFI_CLUSTER_IS_NODE:-false}"
prop_replace 'nifi.cluster.node.address'                    "${NIFI_CLUSTER_ADDRESS:-$HOSTNAME}"
prop_replace 'nifi.cluster.node.protocol.port'              "${NIFI_CLUSTER_NODE_PROTOCOL_PORT:-}"
prop_replace 'nifi.cluster.node.protocol.threads'           "${NIFI_CLUSTER_NODE_PROTOCOL_THREADS:-10}"
prop_replace 'nifi.cluster.node.protocol.max.threads'       "${NIFI_CLUSTER_NODE_PROTOCOL_MAX_THREADS:-50}"
prop_replace 'nifi.zookeeper.connect.string'                "${NIFI_ZK_CONNECT_STRING:-}"
prop_replace 'nifi.zookeeper.root.node'                     "${NIFI_ZK_ROOT_NODE:-/nifi}"
prop_replace 'nifi.cluster.flow.election.max.wait.time'     "${NIFI_ELECTION_MAX_WAIT:-5 mins}"
prop_replace 'nifi.cluster.flow.election.max.candidates'    "${NIFI_ELECTION_MAX_CANDIDATES:-}"
prop_replace 'nifi.web.proxy.context.path'                  "${NIFI_WEB_PROXY_CONTEXT_PATH:-}"
prop_replace 'nifi.security.user.login.identity.provider' 'ldap-provider'

答案 1 :(得分:0)

可以在docker-compose.yaml中指定如下:

environment:
    - NIFI_VARIABLE_REGISTRY_PROPERTIES={PATH HERE}