如何使用docker-compose持久保存nifi流文件?

T_F*_*T_F 2 docker-compose apache-nifi

现在我正在使用nifi及其处理器来处理一些流媒体内容(mqtt侦听器,json评估,文本替换,写入db ...)。我试图持久化流文件,因此进行了一些卷映射(请参见下文)。但这是行不通的。重新启动容器后,似乎没有保存流文件...

有人可以提示我如何解决该问题吗?

nifi:
image: apache/nifi
restart: on-failure
ports:
  - "8000:8000"
networks:
  - traefik
environment:
  - NIFI_WEB_HTTP_PORT=8000
volumes:
  - nifi_conf:/opt/nifi/conf
  - nifi_state:/data/nifi/state
  - nifi_db:/opt/nifi/database_repository
  - nifi_flowfile:/opt/nifi/flowfile_repository
  - nifi_content:/opt/nifi/content_repository
  - nifi_provenance:/opt/nifi/provenance_repository 


volumes:
 nifi_provenance:{}
 nifi_flowfile: {}
 nifi_content: {}
 nifi_db: {}
 nifi_state: {}
 nifi_conf: {}
Run Code Online (Sandbox Code Playgroud)

谢谢。

小智 6

我这边的一个更新。Apache Nifi 在 1.8.0 之后更改了它们的目录。所以你应该使用以下内容:

volumes:
      - ./nifi_state:/opt/nifi/nifi-current/state
      - ./nifi_db:/opt/nifi/nifi-current/database_repository
      - ./nifi_flowfile:/opt/nifi/nifi-current/flowfile_repository
      - ./nifi_content:/opt/nifi/nifi-current/content_repository
      - ./nifi_provenance:/opt/nifi/nifi-current/provenance_repository   
Run Code Online (Sandbox Code Playgroud)


dag*_*ett 5

您可以像这样将Docker容器文件夹直接映射到主机:

services:
  nifi:
    ...
    volumes:
      - ./conf:/opt/conf
      - ./nifi_state:/data/nifi/state
      ...
Run Code Online (Sandbox Code Playgroud)

无需额外的体积定义

请注意,在带有virtualbox的Windows下,此功能仅在当前用户目录中有效。

  • 我在 Ubuntu-1604 上使用 docker。它适用于模板:${PWD}/templates:/opt/nifi/nifi-1.9.2/conf/templates,但不适用于以下模板:flowfile_directory、content_directory、provenance_directory。您尝试过这些文件夹吗? (2认同)