En ce moment, j'utilise nifi et ses processeurs pour du streaming (écouteur mqtt, évaluation json, remplacement de texte, écriture dans db ...). J'essaie de conserver les fichiers de flux et j'ai donc fait un mappage de volume (voir ci-dessous). Mais cela ne fonctionne pas; après avoir redémarré le conteneur, il semble que les fichiers de flux ne soient pas enregistrés ...
Quelqu'un pourrait-il me donner un indice pour résoudre ce problème?
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: {}
Merci. p >
5 Réponses :
vous pouvez mapper les dossiers de conteneurs du docker directement sur la machine hôte comme ceci:
services: nifi: ... volumes: - ./conf:/opt/conf - ./nifi_state:/data/nifi/state ...
aucune définition de volume supplémentaire requise
notez que sous Windows avec virtualbox, cette fonctionnalité ne fonctionne que dans le répertoire utilisateur actuel.
Pour moi, NiFi peut lire à partir de tels volumes mais jamais écrire. Savez-vous comment je peux donner à NiFi une autorisation d'écriture sur un dossier hôte?
Il est inscriptible pour moi. Quel OS avez-vous? Si Windows, utilisez-vous une boîte virtuelle?
J'utilise docker sur Ubuntu-1604. Cela fonctionne pour les modèles: $ {PWD} /templates:/opt/nifi/nifi-1.9.2/conf/templates, mais cela ne fonctionne pas pour les éléments suivants: flowfile_directory, content_directory, provenance_directory. L'avez-vous essayé pour ces dossiers?
Vous pouvez également utiliser uniquement docker-compose stop
au lieu de docker-compose down
, ce qui ne supprimera pas votre conteneur et gardera ainsi les volumes montés.
Cela signifie vous n'avez pas à faire de mappage de volumes et vous pouvez simplement utiliser ce fichier de base 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"
Pour plus d'informations, lisez cet article ici .
Une mise à jour de mon côté. Apache Nifi a changé ses répertoires après la 1.8.0. Vous devez donc utiliser ce qui suit:
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
MODIFICATION FINALE: Après de nombreux tests et essais, le seul moyen que j'ai trouvé pour persister Nifi avec docker swarm a été le suivant:
Étape 1: créer le volume nifi_data
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
Étape 2: Démarrez la pile avec la configuration suivante
docker stack rm nifi
Étape 3: Entrez le conteneur
$ cd /opt/nifi/nifi-current $ cp -r ./* /home/nifi
Étape 4: Copiez le courant dans la maison
$ docker exec -it <container_id> bash
Étape 5: Supprimer la pile déployée
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
Étape 6: Déployer la pile avec la configuration suivante (juste supprimée le #)
$ docker volume create nifi_data
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
Veuillez ajouter une explication