现在我正在使用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: {}
谢谢。
答案 0 :(得分:2)
您可以这样将docker容器文件夹直接映射到主机:
services:
nifi:
...
volumes:
- ./conf:/opt/conf
- ./nifi_state:/data/nifi/state
...
不需要其他卷定义
请注意,在带有virtualbox的Windows中,此功能仅在当前用户目录中有效。
答案 1 :(得分:2)
我这边的一个更新。 1.8.0之后,Apache Nifi更改了目录。因此,您应该使用以下代码:
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
答案 2 :(得分:1)
最终编辑: 经过多次测试和试验,我发现使用docker swarm可以持久存储Nifi的唯一方法是:
第1步:创建nifi_data卷
$ docker volume create nifi_data
第2步:使用以下配置启动堆栈
version: "3.7"
services:
nifi:
image: apache/nifi:1.9.2
ports:
- target: 8080
published: 9090
protocol: tcp
mode: host
environment:
- NIFI_WEB_HTTP_HOST=0.0.0.0
#- NIFI_HOME=/home/nifi
#- NIFI_LOG_DIR=/home/nifi/logs
volumes:
- nifi_data:/home/nifi
volumes:
nifi_data:
external: true
第3步:输入容器
$ docker exec -it <container_id> bash
第4步:将当前副本复制到家里
$ cd /opt/nifi/nifi-current
$ cp -r ./* /home/nifi
第5步:删除已部署的堆栈
docker stack rm nifi
第6步:使用以下配置部署堆栈(只需删除#)
version: "3.7"
services:
nifi:
image: apache/nifi:1.9.2
ports:
- target: 8080
published: 9090
protocol: tcp
mode: host
environment:
- NIFI_WEB_HTTP_HOST=0.0.0.0
- NIFI_HOME=/home/nifi
- NIFI_LOG_DIR=/home/nifi/logs
volumes:
- nifi_data:/home/nifi
volumes:
nifi_data:
external: true
答案 3 :(得分:0)
或者,您只能使用docker-compose stop
而不是docker-compose down
,这不会删除您的容器,因此不会挂载卷。
这意味着您不必执行任何卷映射,而可以使用此基本的docker-compose文件:
version: '2'
services:
futa-nifi-lsc:
environment:
- NIFI_WEB_HTTP_PORT=9000
image: apache/nifi:1.8.0
volumes:
- ./jdbc_driver:/opt/jdbc_driver
- ./checkin_files:/opt/checkin_files
- ./truststore:/opt/truststore
ports:
- "9000:9000"
有关更多信息,请阅读本文here。
答案 4 :(得分:0)
visit(Returner &)