使用 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 分开,一切正常!
您好,感谢您的宝贵时间。
我正在尝试向 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
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 分开,一切正常!