Как сохранить потоковые файлы nifi с помощью docker-compose?

прямо сейчас я использую 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: {}

Спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
6 860
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

вы можете сопоставить папки контейнера докеров непосредственно с хост-компьютером следующим образом:

services:
  nifi:
    ...
    volumes:
      - ./conf:/opt/conf
      - ./nifi_state:/data/nifi/state
      ...

не требуется дополнительное определение тома

обратите внимание, что в Windows с VirtualBox эта функция работает только в текущем пользовательском каталоге.

Для меня НиФи может читать с таких томов, но никогда не пишет. Вы знаете, как я могу дать NiFi разрешение на запись в папку хоста?

UpCat 05.07.2019 13:03

Он доступен для записи для меня. Какая у вас ОС? Если Windows, вы используете виртуальную коробку?

daggett 05.07.2019 15:12

Я использую докер на Ubuntu-1604. Это работает для шаблонов: ${PWD}/templates:/opt/nifi/nifi-1.9.2/conf/templates, однако не работает для следующего: каталог_потокового_файла, каталог_содержимого, каталог_происхождения. Вы пробовали это для этих папок?

UpCat 08.07.2019 07:54

В качестве альтернативы вы можете использовать только 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

Пожалуйста, добавьте объяснение

Yasen 21.04.2020 18:22

Другие вопросы по теме