Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove curl & Nano from standard conatiner builds #338

Open
hardillb opened this issue Oct 10, 2022 · 8 comments
Open

Remove curl & Nano from standard conatiner builds #338

hardillb opened this issue Oct 10, 2022 · 8 comments
Assignees

Comments

@hardillb
Copy link
Member

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

  • curl
  • nano

Check for any others.

@hardillb hardillb self-assigned this Oct 10, 2022
@WeterPeter
Copy link

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
Copy link
Member Author

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

@WeterPeter
Copy link

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
Copy link
Member Author

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
Copy link
Member Author

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
Copy link

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

@zba
Copy link

zba commented Jul 29, 2024

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
Copy link

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 added a commit to Paraphraser/IOTstack that referenced this issue Jul 30, 2024
Harmonises list of add-on nodes across old-menu and master branches.
I've tried to stay away from SensorsIot#755. This includes removal of
`node-red-node-rbe` which has been replaced by the built-in Filter
node.  See:

- [Release notes](https://nodered.org/blog/2021/07/20/version-2-0-released#renamed-rbe-node-to-filter-node)

Migrate from `node-red-contrib-themes/midnight-red` (deprecated) to
`@node-red-contrib-themes/theme-collection` which supports many more
themes. See:

- [Node-RED themes list](https://github.com/node-red-contrib-themes/theme-collection#theme-list)

Modify Dockerfile template:

1. No need to declare `EXTRA_PACKAGES` as an environment variable. It
   isn't needed in the container. The `ARG` reference is sufficient.

2. Remove redundant `apk update` command. The `--no-cache` flag on the
   `apk add` handles both package-list updates and their removal. It
   makes for a slightly smaller container.

   I discovered (and tested) this behaviour when posting a reply to:

   - [node-red-docker issue 338](node-red/node-red-docker#338).

Signed-off-by: Phill Kelley <[email protected]>
Paraphraser added a commit to Paraphraser/IOTstack that referenced this issue Jul 30, 2024
Harmonises list of add-on nodes across old-menu and master branches.
This includes removal of `node-red-node-rbe` which has been replaced by
the built-in Filter node. See:

- [Release notes](https://nodered.org/blog/2021/07/20/version-2-0-released#renamed-rbe-node-to-filter-node)

Migrate from `node-red-contrib-themes/midnight-red` (deprecated) to
`@node-red-contrib-themes/theme-collection` which supports many more
themes. See:

- [Node-RED themes list](https://github.com/node-red-contrib-themes/theme-collection#theme-list)

Modify Dockerfile template:

1. No need to declare `EXTRA_PACKAGES` as an environment variable. It
   isn't needed in the container. The `ARG` reference is sufficient.

2. Remove redundant `apk update` command. The `--no-cache` flag on the
   `apk add` handles both package-list updates and their removal. It
   makes for a slightly smaller container.

   I discovered (and tested) this behaviour when posting a reply to:

   - [node-red-docker issue 338](node-red/node-red-docker#338).

Signed-off-by: Phill Kelley <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants