【问题标题】:How to automatically deploy a Node-RED instance in Docker (including extra nodes)?如何在 Docker 中自动部署 Node-RED 实例(包括额外的节点)?
【发布时间】:2020-04-12 09:46:16
【问题描述】:

我想使用 docker-compose 自动部署 Node-RED 实例。

目标是部署:

  • 流(完成 - 通过填充 /data/flows.json
  • 设置(完成 - 通过填充 /data/settings.js
  • 登录凭据(DONE - settings.js)
  • 时区(完成 - docker-compose.yml)
  • 额外的节点(完成)

我不知道如何在第一次启动时部署调色板,基本上在第一次启动时运行cd /data; npm install 就足够了。

这是我的docker-compose.yml 文件:

version: '2'

services:
  nodered:
    image: nodered/node-red
    user: root:root             # necessary, otherwise we get 'access denied'
    environment:
      TZ: Europe/Amsterdam
    ports:
      - "1880:1880"
    volumes:
      - ./data:/data

【问题讨论】:

    标签: docker npm docker-compose node-red


    【解决方案1】:

    您创建自己的 Docker 容器,扩展 nodered/node-red 容器并包含您自己的 package.json,该容器具有您想要包含在 dependencies 部分中的额外节点。

    确保将依赖项添加到基础映像中包含的现有 package.json 文件中。

    更详细的说明可以在github上的node-red-docker项目中找到here

    【讨论】:

      【解决方案2】:

      经过一些研究,我想对我的问题提出一个简单的答案。

      优点:

      • 轻量级
      • 无需克隆官方镜像即可工作
      • 当依赖关系改变时不需要重建

      缺点:

      • 我不喜欢我的 entrypoint.sh 的最后一行(因为我不得不从官方图像中复制它)

      修改docker-compose.yml:

      version: '2'
      
      services:
        nodered:
          image: nodered/node-red
          user: root:root             # necessary, otherwise we get 'access denied'
          entrypoint: /data/entrypoint.sh
          environment:
            TZ: Europe/Amsterdam
          ports:
            - "1880:1880"
          volumes:
            - ./data:/data
      

      /data/entrypoint.sh 文件:

      #!/bin/sh
      
      DIR=`pwd`
      
      cd /data
      npm install
      
      cd "$DIR"
      npm start -- --userDir /data
      

      为了简单起见,npm install 在每次启动期间运行,因为我发现它几乎不需要任何时间(时间),如果我需要即时修改 package.json,它非常有用。通过touch-ing 文件然后测试文件是否存在,很容易让它只运行一次。

      【讨论】:

      • Stackoverflow 不适合尝试讨论这个问题。但是以 root 身份运行并不是解决权限问题的正确方法
      • 我同意这一点,但是(遗憾的是)“root:root”方法似乎是唯一已知的解决方法,可以在 Node-RED 的 Github 存储库的问题部分找到,例如:github.com/node-red/node-red-docker/issues/69 .
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多