【问题标题】:Adding extra node to Node-RED using docker-compose使用 docker-compose 向 Node-RED 添加额外的节点
【发布时间】:2021-11-27 16:57:40
【问题描述】:

您好,感谢您的宝贵时间。

我正在尝试向 Node-RED (openapi-red) 添加一个额外的节点。启动应用程序时,我没有收到任何错误,一切似乎都运行良好,但是额外的节点没有出现在 Node-RED 中。我要做的就是让这个额外的节点出现在 Node-RED 中。我已经尝试了我在网上找到的所有可能的解决方案,但没有解决这个问题。

我的 Dockerfile:

FROM nodered/node-red
RUN npm i swagger-client
RUN npm install openapi-red

FROM python:3.7-alpine

WORKDIR /code
ENV FLASK_APP=openapimodel.py   
ENV FLASK_RUN_HOST 0.0.0.0

RUN apk add --no-cache python3-dev && pip3 install --upgrade pip 
RUN apk add --no-cache gcc musl-dev linux-headers

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5001
CMD ["flask", "run"] 

docker-compose.yml 中的节点红色:

  nodered:
    image: nodered/node-red:latest
    environment:
        - TZ=Europe/Amsterdam
    ports: 
        - "1880:1880"
    volumes:
        - node-red-data:/data
    links:
        - mongo
    networks:
        app_subnet:
            ipv4_address: 172.16.1.7 

【问题讨论】:

    标签: docker npm docker-compose node-red


    【解决方案1】:

    您的 docker 文件并没有按照您的想法执行。

    目前它采用默认的 Node-RED 容器,添加您想要的 2 个 npm 包然后基本上将其丢弃,因为它随后拉入 Python 容器并将 python 应用程序安装到其中并且不使用任何东西来自 Node-RED 容器。

    最重要的是,docker-compose 文件明确要求原始官方未更改的 Node-RED 容器并运行它。

    获得扩展的 Node-RED 的最快方法是使用 Dockerfile 的前 3 行

    FROM nodered/node-red
    RUN npm i swagger-client
    RUN npm i openapi-red
    

    使用 docker build . -t custom-node-red 构建它

    然后让你的docker-compose.yml 看起来像:

    nodered:
        image: custom-node-red
        environment:
            - TZ=Europe/Amsterdam
        ports: 
            - "1880:1880"
        volumes:
            - node-red-data:/data
        links:
            - mongo
        networks:
            app_subnet:
                ipv4_address: 172.16.1.7 
    

    如果您需要 python 应用程序,请将其构建为带有单独标签的单独容器,并将其作为第二个条目添加到您的 docker-compose.yml

    【讨论】:

      【解决方案2】:

      更新

      在 docker-compose as 上修改 nodered

        nodered:
          build: ./nodered
          environment:
              - TZ=Europe/Amsterdam
          ports: 
              - "1880:1880"
          volumes:
              - node-red-data:/data
          links:
              - mongo
          networks:
              app_subnet:
                  ipv4_address: 172.16.1.7 
      

      并将python和node-red的Dockerfile分开,一切正常!

      【讨论】:

        猜你喜欢
        • 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
        相关资源
        最近更新 更多