node-red-docker icon indicating copy to clipboard operation
node-red-docker copied to clipboard

Remove curl & Nano from standard conatiner builds

Open hardillb opened this issue 3 years ago • 8 comments

At the next major release (4.0.0) remove any unused packages from the base images

  • curl
  • nano

Check for any others.

hardillb avatar Oct 10 '22 08:10 hardillb

Please do not remove curl, I have many automations using curl getting json date from websites and (more important for me) from internal components like my not well supported thermostat and more.

WeterPeter avatar Jan 04 '24 08:01 WeterPeter

Why can't you use the http-request node instead of shelling out to curl?

hardillb avatar Apr 19 '24 16:04 hardillb

Why can't you use the http-request node instead of shelling out to curl?

How to use http-request node doing this? :

curl -f -k -H 'Accept: application/json' -H 'Authorization: Bearer [LONG TOKEN]' -X GET https://192.168.xx.xx/api/v1/production/inverters

WeterPeter avatar Apr 19 '24 17:04 WeterPeter

You can set headers on in the config for the http-request node or pass them in as msg.header

And you can set the http-request node to not validate the server cerificate

hardillb avatar Apr 19 '24 20:04 hardillb

You may also need to tell the http-request not not to validate the the response headers if the device isn't following the spec, but that option has been included in the 3.1.x stream since it was a security update to NodeJS 18 iirc

hardillb avatar Apr 19 '24 20:04 hardillb

Thanks but is goes beond me I am affraid. Maybe you could give me an example flow how to do this?

WeterPeter avatar Apr 20 '24 07:04 WeterPeter

Please do not remove curl, I have many automations using curl getting json date from websites and (more important for me) from internal components like my not well supported thermostat and more.

You can create simple Dockerfile which will install curl to your image:

FROM nodered/node-red:latest
RUN apk update && apk add curl

zba avatar Jul 29 '24 19:07 zba

In my experience (with IOTstack on Raspberry Pis and Debian Proxmox guests - but YMMV), it needs at least:

FROM nodered/node-red:latest
USER root
RUN apk add --no-cache curl
USER node-red

Why? You need to be root to run apk. The base image on DockerHub leaves the user set to "node-red" (Dockerfile line 85). You inherit that at the point of the FROM so you have to switch to root to run apk and then put it back again. Putting it back to "node-red" is particularly important if you also use the Dockerfile to install add-on nodes.

The --no-cache flag implies an apk update and a corresponding cleanup. It's designed to minimise clutter and keep containers small. That said, it doesn't actually make a huge difference to container size (~2MB) so the traditional "update + add" is just as good.

Paraphraser avatar Jul 29 '24 23:07 Paraphraser