Docker节点-红色:将已安装的节点保留在容器之外

问题描述 投票:0回答:1

我必须在容器中安装很多缺少的节点红色节点。保留(命名的)容器并用docker start运行可以正常工作。

现在,我想将已安装的节点保留在单独的外部目录中。如果我将/data挂载到外部目录,则该目录基本上可以工作,但由于将节点安装在~/node_modules中,因此无济于事。如果尝试将~/node_modules挂载到外部目录,则无法启动node-red。

所以我该怎么做才能使安装的节点独立于执行的容器?

编辑:同时,我确实按如下方式运行映像:

#!/bin/bash
sudo -E docker run -it --rm -p 1893:1880 -p 11893:11880 
  \ -e TZ=Europe/Berlin -e NPM_CONFIG_PREFIX=/data/node_modules/ 
  \ -e NODE_PATH=/usr/src/node-red/node_modules:/data/node_modules:/data/node_modules/lib/node_modules 
  \ --log-driver none --mount type=bind,source="$(pwd)"/data,target=/data 
  \ --name myNodeRed nodered/node-red

但是在目录/data/node_modules/lib/node_modules中的其他已安装节点仍然不可见。

编辑2:同时,我试图保留容器。因此,很明显,使用npm install -g安装的节点被完全忽略。

docker npm node-red mount
1个回答
0
投票

容器内Node-RED实例的默认用户不是root(通常),因此您需要确保安装到/data位置的任何卷均可被该用户写入。您可以通过将用户ID传递到容器中,以使其与对挂载点具有写许可权的外部用户相匹配来做到这一点:

docker run -it --rm -v $(pwd)/data:/data -u $USER -e TZ=Europe/Berlin
 \ -p 1893:1880 -p 11893:11880 --log-driver none
 \ --name myNodeRed nodered/node-red
© www.soinside.com 2019 - 2024. All rights reserved.