Как добавить пользовательские NAR в работающий Docker Nifi без уничтожения контейнера?

#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.