使用 docker-compose 添加额外节点到 Node-RED

Adding extra node to Node-RED using docker-compose

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

我正在尝试向 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 文件与您认为的不一样。

目前它采用默认的 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

一个更新

在 docker 上修改了 nodered-compose as

  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 分开,一切正常!