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

标签 docker npm docker-compose node-red

您好,感谢您抽出时间。

我正在尝试向 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/

相关文章:

c# - 在 Docker 中使用 asp.net core 2 模拟 Windows 用户

javascript - Bundle.js 文件中的 Babel 输出未正确输出

mysql - 从sequelize关联检索值时出错

spring - 无法使用Docker部署Spring和MySQL应用程序

linux - 如何进入ubuntu docker容器的bash?

docker - Kafka 无法与 Zookeeper 连接,错误为 "Timed out waiting for connection while in state: CONNECTING"

docker - 使用 docker --net ="host"我可以访问端口

reactjs - 节点 : move files in create-react-app template to root post-install

多个容器之间的 Docker 命名卷

mysql - 使用 docker-compose 链接 django 和 mysql 容器