您好,感谢您抽出时间。
我正在尝试向 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 - 使用 docker-compose 添加额外的节点到 Node-RED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70136905/