#docker #docker-compose #apache-nifi
#docker #docker-compose #apache-nifi
Вопрос:
Окружающая среда
Apache Nifi 1.12.1 работает в Docker 18.09.7 на Ubuntu 18.04.4 LTS
Проблема
Как мне добавить существующий пользовательский NAR в Nifi, работающий в Docker, не убивая контейнер.
Пробовал
У меня есть монтирование с хоста на контейнер, куда я могу отбросить NAR.
# 1 Перезапустите Nifi
Затем я копирую NAR в /lib
каталог.
Перезапустите Nifi, но это убивает контейнер
#2 Скопируйте NAR из mount dir в /extensions
dir
Согласно: https://www.nifi.rocks/auto-loading-extensions /
Но ничего не происходит
Мне нужно иметь возможность добавлять NAR в Nifi, не теряя свой контейнер
Любая помощь / советы будут высоко оценены
docker-compose.yml
version: '3'
services:
nifi:
build: ./nifi
container_name: nifi
ports:
- 7777:8080
volumes:
- ./data:/opt/nifi/nifi-current/data
Dockerfile
FROM apache/nifi:latest
RUN mkdir /opt/nifi/nifi-current/data
RUN chown -R nifi:nifi /opt/nifi/nifi-current/data
EXPOSE 8080
Редактировать
Похоже, что копия NAR в /extensions
каталог загружает NAR
020-10-06 10:35:15,707 INFO [NAR Auto-Loader] org.apache.nifi.nar.StandardNarLoader Starting load process for 1 NARs...
2020-10-06 10:35:15,836 INFO [NAR Auto-Loader] org.apache.nifi.nar.StandardNarLoader Creating class loaders for 1 NARs...
2020-10-06 10:35:15,838 INFO [NAR Auto-Loader] org.apache.nifi.nar.NarClassLoaders Loaded NAR file: /opt/nifi/nifi-current/./work/nar/extensions/my-nar-1.0-SNAPSHOT.nar-unpacked as class loader org.apache.nifi.nar.NarClassLoader[./work/nar/extensions/my-nar-1.0-SNAPSHOT.nar-unpacked]
2020-10-06 10:35:15,838 INFO [NAR Auto-Loader] org.apache.nifi.nar.StandardNarLoader Successfully created class loaders for 1 NARs, 0 were skipped
2020-10-06 10:35:16,076 INFO [NAR Auto-Loader] org.apache.nifi.nar.StandardNarLoader Finished NAR l
Но он не отображается в Add Processor
списке…
Редактировать
Просто нужно обновить пользовательский интерфейс Nifi в браузере, чтобы увидеть процессор
Ответ №1:
Решение
#2 Копирование NAR из mount dir в /extensions dir сделало свое дело.
Итак, я помещаю NAR в смонтированный каталог, затем копирую NAR в /extensions
В nifi-app.log
можно увидеть загружаемый NAR
А затем обновить пользовательский интерфейс и процессор можно добавить в canvas
Комментарии:
1. Обратите внимание, что вы можете сделать это один раз для каждого пользовательского процессора, прежде чем вызывать docker stop, очистить NAR и поместить новый в точку монтирования.
2. Привет, Майк, я не понимаю, о чем ты говоришь. Я могу добавить 2 NAR для монтирования и cp их (по одному за раз) в каталог расширений. Нет необходимости останавливать docker. Но, возможно, я упускаю суть.
3. Я знаю, что вы не можете снова добавить тот же NAR (то же имя и версию). Поскольку выгрузка из JVM не поддерживается.
4. Я имел в виду развертывание новой копии пользовательского NAR.
Ответ №2:
гэри!
Я встречаю эту проблему как одно и то же условие.
Это мое решение.
смонтируйте другой путь и используйте cp XXX.nar /opt/nifi/nifi-current/extensions.
Это действительно работает.
Я гость, эта проблема заключается в том, что АВТОЗАГРУЗКА nar использует WatchService, но он не может наблюдать, как файлы монтируются docker.
ТЕСТ В Ubuntu
в Ubuntu я использую эту команду для запуска nifi.
docker run -d -v /root/nifitar:/opt/nifi/nifi-current/extensions -e TZ=Asia/Shanghai -p 8080:8080 apache/nifi:1.13.2
а затем я копирую nar в /root/nifitar на хосте, nar отображается в пользовательском интерфейсе. итак, это работает, если вы находитесь в ubuntu, вы можете смонтировать dockerdir в файловой системе хоста, и он будет работать.
Комментарии:
1. не работает в docker-desktop в моей Windows 10.