node-red / node-red-docker

Repository for all things Node-RED and Docker related
Apache License 2.0
490 stars 387 forks source link

Remove curl & Nano from standard conatiner builds #338

Open hardillb opened 2 years ago

hardillb commented 2 years ago

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

Check for any others.

WeterPeter commented 11 months ago

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.

hardillb commented 7 months ago

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

WeterPeter commented 7 months ago

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

hardillb commented 7 months ago

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 commented 7 months ago

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

WeterPeter commented 7 months ago

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

zba commented 4 months ago

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
Paraphraser commented 4 months ago

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.