Hi,
I forked node-red/node-red repository and made some custom changes to its UI and functionality. Now I want to create a docker image of this edited node-red source code. I found this link regarding the customer docker image creation. But it mentions that it picks node-red code from npm registry.
How do I make custom docker image of a local node-red source code ?
the node-red version is a dependency in the package.json there - so edit that to point that at your local version instead.
I tried doing that. Image gets built But when I run the image using docker run -it -p 1880:1880 --name <name> <image> that didn't work. It said Module Not Found error.
What exactly did you put in the package.json file?
This is the package.json file for docker-custom
{
"name": "node-red-docker",
"version": "1.0.5",
"description": "Low-code programming for event-driven applications",
"homepage": "http://nodered.org",
"license": "Apache-2.0",
"main": "node_modules/node-red/red/red.js",
"scripts": {
"start": "node $NODE_OPTIONS node_modules/node-red/red.js $FLOWS"
},
"contributors": [],
"dependencies": {
"node-red": "file:../node-red"
},
"engines": {
"node": ">=10"
}
}
Hi @shrey.garg
I've edited your post to make the JSON a bit more readable.
I don't have a quick answer here - this isn't something I've thought about or done before.
The node-red git repository contains 7 separate npm modules that make up Node-RED. You can't simply point to the root of the git repository because that is not the same thing as the node-red module published to npm.
There may be an easier way to do it, but I would try something along the lines of:
- run
grunt releaseto build the npm module tgz files. These get written to.dist/modules/. - modify your
package.jsonfile to point to these tgz files:
"dependencies": {
"@node-red/util": "file:../node-red/.dist/modules/node-red-util-x.y.z.tgz",
"@node-red/runtime": "file:../node-red/.dist/modules/node-red-runtime-x.y.z.tgz",
"@node-red/registry": "file:../node-red/.dist/modules/node-red-registry-x.y.z.tgz",
"@node-red/nodes": "file:../node-red/.dist/modules/node-red-nodes-x.y.z.tgz",
"@node-red/editor-client": "file:../node-red/.dist/modules/node-red-editor-client-x.y.z.tgz",
"@node-red/editor-api": "file:../node-red/.dist/modules/node-red-editor-api-x.y.z.tgz",
"node-red": "file:../node-red/.dist/modules/node-red-x.y.z.tgz"
},
You will need to change x.y.z for whatever version number you've given your custom modules. (Use the command node scripts/set-package-version.js x.y.z to update all of the module's package.json files with the version number of your choosing before running grunt release).
That should then install the modules from your customised version. But as I said... I haven't tried this, so not sure if there's anything else needed.
This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
