прямо сейчас я использую nifi и его процессоры для некоторых потоковых вещей (прослушиватель mqtt, оценка json, замена текста, запись в базу данных ...). Я пытаюсь сохранить потоковые файлы, поэтому я сделал сопоставление томов (см. ниже). Но это не работает; после перезапуска контейнера кажется, что потоковые файлы не сохраняются...
Может ли кто-нибудь дать мне подсказку, как решить эту проблему?
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: {}
Спасибо.





вы можете сопоставить папки контейнера докеров непосредственно с хост-компьютером следующим образом:
services:
nifi:
...
volumes:
- ./conf:/opt/conf
- ./nifi_state:/data/nifi/state
...
не требуется дополнительное определение тома
обратите внимание, что в Windows с VirtualBox эта функция работает только в текущем пользовательском каталоге.
Он доступен для записи для меня. Какая у вас ОС? Если Windows, вы используете виртуальную коробку?
Я использую докер на Ubuntu-1604. Это работает для шаблонов: ${PWD}/templates:/opt/nifi/nifi-1.9.2/conf/templates, однако не работает для следующего: каталог_потокового_файла, каталог_содержимого, каталог_происхождения. Вы пробовали это для этих папок?
В качестве альтернативы вы можете использовать только 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"
Для получения дополнительной информации прочитайте эту статью здесь.
Одно обновление с моей стороны. 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
ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ: После многих тестов и испытаний единственный способ, которым я нашел, чтобы сохранить 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
version: '3.7'
services:
zookeeper: # the configuration manager
hostname: zookeeper
container_name: zookeeper
image: 'bitnami/zookeeper:latest'
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
nifi:
image: apache/nifi:latest
ports:
- 8080 # Unsecured HTTP Web Port
environment:
- NIFI_WEB_HTTP_PORT=8080
- NIFI_CLUSTER_IS_NODE=true
- NIFI_CLUSTER_NODE_PROTOCOL_PORT=8082
- NIFI_ZK_CONNECT_STRING=zookeeper:2181
- NIFI_ELECTION_MAX_WAIT=1 min
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
- ./nifi/logs:/opt/nifi/nifi-current/logs
Пожалуйста, добавьте объяснение
Для меня НиФи может читать с таких томов, но никогда не пишет. Вы знаете, как я могу дать NiFi разрешение на запись в папку хоста?