NEWS
Node.js Update im Docker
-
Hallo,
ich halte mich an die Vorgaben so wie nachfolgend beschrieben
Docker: https://docs.buanet.de/de/iobroker-docker-image/docs/#wartung,
aber Node.js wird nicht auf die aktuelle Version von 18.20.0 auf 18.20.1 upgedatet.
Was muss ich tun?
Danke
-
Wie bist du denn auf die 18.20 gekommen?
-
Über den normalen Weg aber nun wird ja deutlich gesagt, dass man das im Docker nicht tun soll.
https://forum.iobroker.net/topic/64032/update-nodejs-best-practise-supported-16-und-18
-
Linux System Pakete aktualisieren
Die im ioBroker Docker Image enthaltenen Linux Pakete lassen sich manuell über den integrierten Paketmanager apt aktualisieren. Dabei unterscheidet sich die Vorgehensweise nicht von der anderer auf Debian basierender Linux Systeme und erfolgt über die Kommandozeile des Containers.
Beachte, dass der empfohlene Weg allerdings das Herunterladen des aktuellen ioBroker Docker Images und anschließende Neuerstellen des Containers istAlso
apt update apt policy nodejs
anschauen.
-
@thomas-braun sagte in Node.js Update im Docker:
Also
Copy to Clipboard apt update apt policy nodejs
anschauen.Habe ich mir angeschaut und was soll ich nun machen?
11 packages can be upgraded. Run 'apt list --upgradable' to see them.
nodejs:
Installed: 18.20.0-1nodesource1
Candidate: 18.20.1-1nodesource1 -
jetzt gehst du in die Console und führst die Befehle aus
sudo apt update && apt upgrade -y
kannst auch bequem den Befehl nehmen
sudo apt update && sudo apt full-upgrade && sudo apt autoremove
-
@haselchen sagte in Node.js Update im Docker:
sudo apt update && sudo apt full-upgrade && sudo apt autoremove
Danke und aktuell Version ist drauf.
Jetzt frage ich mich natürlich warum etwas anderes empfohlen wird, wenn es nicht funktioniert?
-
Weil diese Änderungen nicht persistent sind.
-
@haselchen sagte in Node.js Update im Docker:
sudo apt update && apt upgrade -y
kannst auch bequem den Befehl nehmen
sudo apt update && sudo apt full-upgrade && sudo apt autoremoveSiehe https://docs.buanet.de/iobroker-docker-image/docs/#updates-upgrades
Das macht man in Docker-Containern eigentlich nicht (weil dann hat man ja nicht mehr genau den Stand, welchen man mal geladen hat - und das ist ja der Sinn von Containern)
Note that the recommended way is always to simply pull the newest image and recreate your ioBroker Docker container.
-
Jetzt wird es verwirrend.
Was ist denn jetzt der richtige Weg im Docker?
-
@th-g sagte in Node.js Update im Docker:
Was ist denn jetzt der richtige Weg im Docker?
Neues, aktuelles Image ziehen.
-
Würde bedeuten, dass alle 2Wochen nen neues Image heruntergeladen werden müsste, weil sich die NodeVersion von z.B. 18.20.0 auf 18.20.1 ändert?
Das halte ich für absoluten Quark.
Ausserdem wird dieser Weg empfohlen, nicht vorgeschrieben.
Ich bin jetzt seit Jahren dabei und benutze den 2.IobrokerContainer.
Ich habe nicht die geringsten Schwierigkeiten mit dem Updaten des Containers.
Sei es JSController, Adapter oder Node.Aber um Mißverständnisse vorzubeugen:
Das ist MEINE Installation und Risiko. -
Für reine Anwender wie mich ist das natürlich nicht so gut, wenn es so unterschiedliche Aussagen gibt.
-
@haselchen sagte in Node.js Update im Docker:
Ich habe nicht die geringsten Schwierigkeiten mit dem Updaten des Containers.
Ist ja auch technisch kein Problem. Nur widerspricht das halt dem Konzept von Docker-Containern (LXC ist wieder was ganz anderes). Daher ja auch die Empfehlung in der Doku es nicht zu tun.
Spätestens wenn Du Major-Updates von nodejs machst ist ein neues Image sinnvoll. Sonst kann man sich das mit Docker auch komplett sparen
-
Die letzte Version von buanet ist 9.1.1 vom 24.01.24
Wie soll also der User an die aktuelle Node 18.20.1 kommen?Wenn ich da nen Denkfehler habe, korrigier mich bitte.
-
@haselchen Normalerweise müssten die Images regelmäßig neu gebaut werden. Aktuell passiert das scheinbar nur bei einem Release und nicht mit einem fixen Zeitplan:
- https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian12-latest.yml
- https://github.com/buanet/ioBroker.docker/blob/main/.github/workflows/build-debian12-latest.yml
Da könnte man drüber sprechen, dass häufiger neue Images veröffentlicht werden sollten.
Die Idee von Docker ist ja, dass jeder eine identische Applikation in einer identischen Umgebung bekommt. Also auch die Pakete im Userland haben dann fixe Versionen. Lade ich heute das Image
iobroker/iobroker:v9.1.1
und in 2 Wochen auf einem anderen System, ist das Ergebnis exakt das gleiche. Und darum geht es ja: Reproduzierbarkeit und klar definierte Versionen.Das wird natürlich dadurch etwas verwässert, dass man mit weiteren Env-Variablen des Containers auch Pakete hinzufügen kann oder sogar ein Update anstoßen kann.
-
Da hast Du jetzt schön Docker bzw. Container erklärt, aber keine Antwort auf meine Frage geliefert
Die letzte Version von buanet ist 9.1.1 vom 24.01.24 Wie soll also der User an die aktuelle Node 18.20.1 kommen?
Du glaubst doch nicht ernsthaft, dass der Entwickler mit jeder kleinen Node Änderung nen Image rausbringt.
André schreibt auf seiner Seite selber:
..... oder die Nodejs-Version manuell innerhalb des Containers UpdatenSei es wie es ist...wir haben eine Grauzone und jeder soll selber entscheiden, wie er bei einem Update vorgeht.
-
@haus-automatisierung sagte in Node.js Update im Docker:
Da könnte man drüber sprechen, dass häufiger neue Images veröffentlicht werden sollten.
Es wurde bisher immer das latest Image mit der jeweils aktuellen Nodejs Version regelmäßig neu gebaut. In der Erkennung war aber ein Fehler, den André gerade behebt. Heute Abend soll es ein aktualisiertes Image geben.
EDIT: @th-g Deine Methode war also absolut korrekt und auch so empfohlen.
-
@haselchen sagte in Node.js Update im Docker:
Du glaubst doch nicht ernsthaft, dass der Entwickler mit jeder kleinen Node Änderung nen Image rausbringt.
Soll ich jetzt best practices für Docker verlinken? Natürlich beantwortet das nicht die Frage, wie man die neueste Node-Version kommt. Aber das stört dich bei anderen Paketmanagern ja auch nicht, oder?
Wenn Du einen beliebigen Adapter installierst, bringt der ebenfalls über die package.json eine Liste der Pakete + der gewünschten Version mit. Sind die Abhängigkeiten immer top aktuell? Nein. Ist das nötig? In den meisten Fällen wohl nicht.
In meinen Augen gibst Du mit der Verwendung des Docker-Images das Abhängigkeitsmanagement in die Hände des Entwicklers, welche die Container bereitstellt und musst dich nicht mehr darum kümmern. Nur, dass das Image aktuell gehalten wird. Genau wie bei ioBroker-Adaptern auch jemand anders für Dich die Pakete aktualisiert.
-
@haselchen sagte in Node.js Update im Docker:
Sei es wie es ist...wir haben eine Grauzone und jeder soll selber entscheiden, wie er bei einem Update vorgeht.
Eben!
Docker-Container sind eigentlich nicht dazu gedacht, damit dauerhaft ein bestimmtes System zu betreiben.
Das sind Wegwerfartikel. Benutzen, verwerfen, neu aufsetzen.
Kollegen von mir ziehen scriptgesteuert in der Cloud 'ne komplette Infrastruktur für ihr Build hoch und werfen das anschließend komplett weg.Darum muss in einem Container auch eigentlich nix manuell aktualisiert werden.
Wer's trotzdem machen möchte: Ist ja nicht verboten, sondern lediglich "nicht empfohlen".Solange der Container läuft, ist ja auch alles tutti.
Erst wenn man den Container verwirft und aus dem Image neu erstellt, sind die in der Zwischenzeit aktualisierten Pakete wieder auf dem ursprünglichen Stand.
Muss man halt wissen ... um sich dann im Fall der Fälle nicht zu fragen, warum.