【问题标题】:Nifi cannot startup with dockerNifi 无法使用 docker 启动
【发布时间】:2020-06-27 15:44:07
【问题描述】:

我正在尝试将 nifi 与 docker 一起使用,但无济于事。 我有以下 docker 文件

version: "3.7"
services:
  nifi_one:
    image: apache/nifi
    hostname: nifi_one
    container_name: nifi_one
    environment:
      NIFI_WEB_HTTP_HOST: "http://localhost"
      NIFI_WEB_HTTP_PORT: "8084"
      NIFI_CLUSTER_IS_NODE: "true"
      NIFI_CLUSTER_NODE_PROTOCOL_PORT: "8085"
      NIFI_ZK_CONNECT_STRING: "localhost:2181"
      NIFI_ELECTION_MAX_WAIT: "1 min"
    network_mode: host
    volumes:
      - ./nifi:/nifi

  nifi_two:
    image: apache/nifi
    hostname: nifi_two
    container_name: nifi_two
    depends_on:
     - nifi_one
    environment:
      NIFI_WEB_HTTP_HOST: "http://localhost"
      NIFI_WEB_HTTP_PORT: "8084"
      NIFI_CLUSTER_IS_NODE: "true"
      NIFI_CLUSTER_NODE_PROTOCOL_PORT: "8085"
      NIFI_ZK_CONNECT_STRING: "localhost:2181"
      NIFI_ELECTION_MAX_WAIT: "1 min"
    network_mode: host
    volumes:
      - ./nifi:/nifi

volumes:
  nifi:

我收到以下错误

2020-06-27 15:36:51,540 信息 [主要] o.e.j.a.AnnotationConfiguration 扫描经过的时间=18ms 2020-06-27 15:36:51,542 INFO [main] o.e.j.server.handler.ContextHandler._没有弹簧 在类路径上检测到 WebApplicationInitializer 类型 2020-06-27 15:36:51,684 信息 [主要] o.e.jetty.server.handler.ContextHandler 开始 o.e.j.w.WebAppContext@51b35e4e{nifi-error,/,file:///opt/nifi/nifi-current/work/jetty/nifi-web-error-1.11.4.war/webapp/,AVAILABLE}{./work/ nar/framework/nifi-framework-nar-1.11.4.nar-unpacked/NAR-INF/bundled-dependencies/nifi-web-error-1.11.4.war} 2020-06-27 15:36:51,922 警告 [主要的] org.apache.nifi.web.server.JettyServer 无法启动 Web 服务器... 关闭。 java.net.SocketException:未解析的地址 sun.nio.ch.Net.translateToSocketException(Net.java:131) 在 sun.nio.ch.Net.translateException(Net.java:157) 在 sun.nio.ch.Net.translateException(Net.java:163) 在 sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:87) 在 org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:342) 在 org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:308) 在 org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) 在 org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 在 org.eclipse.jetty.server.Server.doStart(Server.java:396) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 在 org.apache.nifi.web.server.JettyServer.start(JettyServer.java:952) 在 org.apache.nifi.NiFi.(NiFi.java:158) 在 org.apache.nifi.NiFi.(NiFi.java:72) 在 org.apache.nifi.NiFi.main(NiFi.java:301) 原因: java.nio.channels.UnresolvedAddressException: null at sun.nio.ch.Net.checkAddress(Net.java:101) 在 sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:215) 在 sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:85) ... 11 个常用框架省略 2020-06-27 15:36:51,923 INFO [Thread-1] org.apache.nifi.NiFi 正在启动 Jetty Web 服务器的关闭... 2020-06-27 15:36:51,938 信息 [线程 1] o.eclipse.jetty.server.AbstractConnector 停止 ServerConnector@cb03411{HTTP/1.1,[http/1.1]}{http://localhost:8084} 2020-06-27 15:36:51,938 信息 [线程 1] org.eclipse.jetty.server.session node0 停止清理

谁能帮我解决这个问题?

【问题讨论】:

    标签: docker docker-compose apache-nifi


    【解决方案1】:

    需要进行三处更改才能解决问题(如果只进行一处更改,则会引发其他异常):

    1. 删除NIFI_WEB_HTTP_HOST: "http://localhost" 行,因为它在加载网络服务器时会引发异常。
    2. NIFI_CLUSTER_IS_NODE: "true" 行应更改为 NIFI_CLUSTER_IS_NODE: "false",因为没有定义集群。
    3. 删除network_mode: host这一行。

    进行这些更改后,两个 Nifi 应用程序已成功加载。

    但是,YAML 文件中缺少另一个定义,这对于将 Nifi 应用程序公开给外部访问至关重要。
    添加 ports: 定义可以修复 Nifi 应用程序侦听的外部端口。格式为 {external-port}:{internal-port}。

    下面的 YAML 代码创建并加载了两个 Nifi 应用程序。一个暴露在 http://localhost:8088/nifi 上,另一个暴露在 http://localhost:8090/nifi 上。

    注意三方共享的共享文件夹的定义:容器的主机nifi_onenifi_two

    完整的定义是:

    version: "2.0"
    services:
      nifi_one:
        image: apache/nifi
        hostname: nifi_two
        container_name: nifi_one
        ports:
          - 8088:8080 # the internal port 8080 is exposed as 8088
        environment:
          NIFI_WEB_HTTP_PORT: "8080"
          NIFI_CLUSTER_IS_NODE: "false"
          NIFI_CLUSTER_NODE_PROTOCOL_PORT: "8085"
          NIFI_ZK_CONNECT_STRING: "localhost:2181"
          NIFI_ELECTION_MAX_WAIT: "1 min"
        volumes:
          - ./nifi-vol:/opt/nifi/nifi-current/temp2
    
    
      nifi_two:
        image: apache/nifi
        hostname: nifi_two
        container_name: nifi_two
        depends_on:
         - nifi_one
        ports:
          - 8090:8081 # setting a unique port to exemplify this feature 
        environment:
          NIFI_WEB_HTTP_PORT: "8081" # the Nifi listens to port 8081 in the container, which is exposed as 8090 externally
          NIFI_CLUSTER_IS_NODE: "false"
          NIFI_CLUSTER_NODE_PROTOCOL_PORT: "8085"
          NIFI_ZK_CONNECT_STRING: "localhost:2181"
          NIFI_ELECTION_MAX_WAIT: "1 min"
        volumes:
          - ./nifi-vol:/opt/nifi/nifi-current/temp2
    
    volumes:
      nifi:
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-09
      • 1970-01-01
      • 2023-01-28
      • 1970-01-01
      • 2018-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多