【问题标题】:Persiste apache nifi flow.xml.gz file in docker volume在 docker 卷中持久化 apache nifi flow.xml.gz 文件
【发布时间】:2019-09-26 02:19:34
【问题描述】:

如何将 flow.xml.gz 文件保存在 nifi docker 容器中?
我正在使用 docker-compose 文件,它给了我错误,例如找不到某些文件。
滴滴你也遇到过同样的问题吗?
谢谢

    version: "3.3"
services:
  nifi:
    image: apache/nifi
    volumes:
      - /home/ubuntu/nifi/conf:/opt/nifi/nifi-current/conf
      #- ./flow/flow.xml.gz:/opt/nifi/nifi-current/conf/flow.xml.gz
    ports:
      - "8080:8080"

【问题讨论】:

  • 如果您可以共享您的 docker-compose.yml 和文件夹结构(树),则丢失文件通常是一个易于修复的错误
  • 显然我不能对单个文件进行卷,而是对整个文件夹进行卷,你知道为什么吗?
  • 是的,你可以。我正在做。确保文件存在。您遇到什么错误?
  • 注释行是它不起作用的行:“./conf/flow.xml.gz: Device or resource busy”
  • 我做到了。因此,无论是源还是目标都忙,无法访问。您可以通过首先将目标更改为 /tmp/x.tar.gz(一个尚不存在的文件)来调试它

标签: docker docker-compose apache-nifi docker-volume


【解决方案1】:

我解决了这个问题,将flow.xml.gz 的路径更改为另一个目录。这是我的docker-compose.yaml 供参考:

version: "3.9"
services:

  nifi:
    container_name: nifi
    image: apache/nifi:1.15.0
    ports:
      - 8443:8443
    volumes:
      - ./config:/conf
    environment:
      - SINGLE_USER_CREDENTIALS_USERNAME=admin
      - SINGLE_USER_CREDENTIALS_PASSWORD=S3curePa55word
      - NIFI_SENSITIVE_PROPS_KEY=pUaEVgyGKT61fMCAWNbjJPMwAcQDuDj4
    entrypoint: >
      bash -c "echo Overwriting entrypoint
      && echo Replace path for flow.xml.gz
      && sed -i 's#=./conf/flow.xml.gz#=/conf/flow.xml.gz#g' /opt/nifi/nifi-current/conf/nifi.properties
      && /opt/nifi/scripts/start.sh"

【讨论】:

    【解决方案2】:

    显然 NiFi 不允许您只保留 flow.xml.gz 文件,它会给出错误并且容器会关闭。
    您需要持久化整个/opt/nifi/nifi-current/conf/ 文件夹

    【讨论】:

    • 嗯,是的。当你只挂载一个文件时,你不能删除该文件。只有内联覆盖它。所以相当于编辑一个内联文件夹,就是编辑它的文件!
    • 能否添加指向 DockerFile 和 docker-compose.yml 的链接。我正面临这个问题,想了解您如何解决它。我是 docker 新手,所以无法理解答案。
    • @MurtazaHaji 您可以按照此处描述的步骤进行操作[stackoverflow.com/a/63734814/6730346]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    相关资源
    最近更新 更多