NEWS
Node.js Update im Docker
-
@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. -
@th-g sagte in 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
Der Trick liegt daran den entsprechenden Abschnitt komplett zu lesen insbesondere des letzten absatzes. Speziell zu Node stand da eigentlich nix mehr oder hab ich da was übersehen?
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 ist.
-
Wie lange dauert es in der Regel bis eine Versionen im latest Docker ist? Versuche seit zwei Tagen meinen Docker neu zu erstellen um auf die neue Node.js 20.15.1 Version zu kommen aber es ist immer noch die alte im Image.
-
du kannst hier schauen, wann welches "image" unter welchem tag veröffentlicht wurde.
wenn du das absolut letzte image abrufen willst, dann könntest du
buanet/iobroker:beta-node22
im docker angeben. das ist 5h alt.das letzte offizielle latest (mit v9) ist 5 Tage alt.
-
@oliverio sagte in Node.js Update im Docker:
buanet/iobroker:beta-node22
node 22 ist aktuell nicht empfohlen und könnte mit einigen Adaptern Probleme machen.
-
@haus-automatisierung sagte in Node.js Update im Docker:
@oliverio sagte in Node.js Update im Docker:
buanet/iobroker:beta-node22
node 22 ist aktuell nicht empfohlen und könnte mit einigen Adaptern Probleme machen.
richtig, wie alle Beta-Versionen, bitte beachten VOR dem Installieren.. (und backup machen und so.. ne.. )
Ich hab mal gewagt, nachdem ich ein paar Tests aufm Raspi gemacht habe, mein produktives Docker mit der V10-beta1-Node-22 laufen zu lassen, und siehe da, es funktioniert... diese Adapter laufen bei MIR unter Node 22... muss man nicht nachmachen.. :
iobroker@iobroker:~$ iob update Used repository: beta Adapter "accuweather" : 1.5.0 , installed 1.5.0 Adapter "admin" : 7.0.16 , installed 7.0.16 Adapter "alarm" : 3.6.1 , installed 3.6.1 Adapter "alexa2" : 3.26.5 , installed 3.26.5 Adapter "backitup" : 3.0.9 , installed 3.0.9 Adapter "bluelink" : 2.3.6 , installed 2.3.8 Adapter "cloud" : 5.0.1 , installed 5.0.1 Adapter "countdown" : 2.2.0 , installed 2.2.0 Adapter "device-watcher": 2.12.1 , installed 2.12.1 Adapter "devices" : 1.1.5 , installed 1.1.5 Adapter "deyeidc" : 0.0.14 , installed 0.0.14 Adapter "email" : 1.3.1 , installed 1.3.1 Adapter "energiefluss" : 3.6.0 , installed 3.6.0 Adapter "feiertage" : 1.2.0 , installed 1.2.0 Adapter "fitbit-fitness": 0.5.0 , installed 0.5.0 Adapter "frigate" : 1.2.1 , installed 1.2.1 Adapter "fritzdect" : 2.5.9 , installed 2.5.9 Adapter "fullybrowser" : 3.0.12 , installed 3.0.12 Adapter "go-e" : 1.0.36 , installed 1.0.36 Adapter "govee-local" : 0.2.6 , installed 0.2.6 Adapter "heizoel" : 1.0.3 , installed 1.0.3 Adapter "ical" : 1.15.0 , installed 1.15.0 Adapter "influxdb" : 4.0.2 , installed 4.0.2 Adapter "iot" : 3.3.0 , installed 3.3.0 Adapter "javascript" : 8.6.0 , installed 8.6.0 Controller "js-controller": 6.0.8 , installed 6.0.8 Adapter "lg-thinq" : 1.0.1 , installed 1.0.1 Adapter "lgtv" : 2.2.0 , installed 2.2.0 Adapter "linux-control": 1.1.5 , installed 1.1.5 Adapter "meteoalarm" : 3.0.2 , installed 3.0.2 Adapter "mihome-vacuum": 4.2.0 , installed 4.2.0 Adapter "minuvis" : 2.3.3 , installed 2.3.3 Adapter "mqtt" : 6.0.0 , installed 6.0.0 Adapter "notification-manager": 1.1.2, installed 1.1.2 Adapter "notificationforandroidtv": 3.0.4, installed 3.0.4 Adapter "nut" : 1.6.0 , installed 1.6.0 Adapter "odl" : 3.0.1 , installed 3.0.1 Adapter "oilfox" : 4.3.0 , installed 4.3.0 Adapter "ping" : 1.6.2 , installed 1.6.2 Adapter "pollenflug" : 1.0.6 , installed 1.0.6 Adapter "proxmox" : 2.3.0 , installed 2.3.0 Adapter "reolink" : 1.1.0 , installed 1.1.0 Adapter "rest-api" : 2.0.3 , installed 2.0.3 Adapter "shelly" : 7.0.0 , installed 7.0.0 Adapter "simple-api" : 2.8.0 , installed 2.8.0 Adapter "snmp" : 3.2.0 , installed 3.2.0 Adapter "socketio" : 6.7.1 , installed 6.7.1 Adapter "solarmanpv" : 0.5.1 , installed 0.5.1 Adapter "sonoff" : 3.1.0 , installed 3.1.0 Adapter "synology" : 3.1.0 , installed 3.1.0 Adapter "telegram" : 3.8.0 , installed 3.8.0 Adapter "tr-064" : 4.3.0 , installed 4.3.0 Adapter "trashschedule": 3.3.0 , installed 3.3.0 Adapter "tuya" : 3.15.0 , installed 3.15.0 Adapter "unifi" : 0.7.0 , installed 0.7.0 Adapter "uv-protect" : 0.6.0 , installed 0.6.0 Adapter "viessmannapi" : 2.4.0 , installed 2.4.0 Adapter "vis" : 1.5.6 , installed 1.5.6 Adapter "weatherunderground": 3.7.0, installed 3.7.0 Adapter "web" : 6.3.0 , installed 6.3.0 Adapter "wifilight" : 1.2.2 , installed 1.2.2 Adapter "windows-control": 0.1.5 , installed 0.1.5 Adapter "wled" : 0.7.3-beta.0, installed 0.7.3-beta.0 Adapter "worx" : 3.0.2 , installed 3.0.2 Adapter "ws" : 2.6.2 , installed 2.6.2 Adapter "yahka" : 1.0.3 , installed 1.0.3 Adapter "yeelight-2" : 1.4.0 , installed 1.4.0 Adapter "zigbee" : 1.10.3 , installed 1.10.3 iobroker@iobroker:~$
-
@ilovegym sagte in Node.js Update im Docker:
diese Adapter laufen bei MIR unter Node 22
Ich denke auch, dass 95% der Adapter keine Probleme machen werden. Dennoch ist das mit Vorsicht zu genießen und man sollte sich in dem Rahmen bewegen, welcher offiziell getestet wurde. Und ich habe z.B. noch keinen meiner Adapter unter node 22 getestet.
-
Da bin ich ganz bei dir, deshalb schrieb ich ja, " laeuft bei MIR" - das heisst auch nicht, dass es woanders geht.. und das auch erst seit ner Viertelstunde.. also warten wir mal ein paar Scripts und Tage ab..
Zumindest Canvas hat erwartungsgemäß etwas gezickt und musste, wie in der Anleitung vom mihome-vacuum-Adapter beschrieben, nach installiert werden, die anderen Pakete waren schon da.Fuer mich traue ich mir das zu, da ich weiss, was ich mache, und - ganz wichtig - ich vor allem weiss, wie ich wieder downgrade
Stresstest ist das hier auf jeden Fall, hier ballern ueber 700 Devices per mqtt / zigbee ihre Sensordaten ununterbrochen rein..
Werden die Woche noch ein paar mehr, muss noch 12 NSPanels flashen und auch diese Scripte laufen..zur Zeit auf 2 Panels..So, das Logfile des Dockers wirft etliche "deprecated" Module in rote Licht.. da werden einige Adapter doch anpassungen machen muessen.. ich bin gerade mal am sortieren.. was das alles ist...
Hab ja auch uralt-Adapter Wifilight am laufen.. der ist noch Soef.. wer den noch kennt...Edit:
Deprecated Modules:
DeprecationWarning: Thepunycode
module is deprecated. Please use a userland alternative instead.
DeprecationWarning: Theutil.isArray
API is deprecated. Please useArray.isArray()
instead.
DeprecationWarning: Theutil.isRegExp
API is deprecated. Please usearg instanceof RegExp
instead.
DeprecationWarning: Theutil.isDate
API is deprecated. Please usearg instanceof Date
instead. -
Du kannst auch, ich weiss zwar nicht welches Image Du gerade hast V8 oder V9, die Node Version so im Container updaten:
Before adding the repositories from where I will get the packages, I need to install some Debian packages so it can talk with the server properly.
This step may not be necesserary if we didi it already with a previous installation, for example.
Update the package list and upgrade the existing packages, as usual. sudo apt update sudo apt upgrade Install the debian packages that will allow us to interact with the external packages repositories sudo apt install -y ca-certificates curl gnupg
Now we're ready to add external repositories and interact with them as usual.
2.2. Set up the repositories in the APT package managerDownload the GPG key curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg Define which version of NodeJS do we want to download. This is done by definin a environment variable. If you prefer another version, just edit the value. NODE_MAJOR=20 Add the NodeJS repository echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list Update the package list sudo apt update
Sollte die 20er Version damit nicht kommen, dann
And now we can install NodeJS as any other package in the system
sudo apt install nodejs
Ich hab so bei mir die Version im Container von 18 auf 20 gehoben.
Edit:
-
das lebt nur solange, bis der container neu regeneriert wird.
fürs testen kann man das machen
ist aber am generellen konzept eines containers vorbei. -
Das ist korrekt und hatten wir schonmal als Thema.
Da sich die Major Versionen von Node und das OS nicht alle paar Monate ändern, sondern Jahre, generiere ich nicht so häufig Container.
Dementsprechend ist das für mich so fein. -
@haselchen sagte in Node.js Update im Docker:
und das OS nicht alle paar Monate ändern,
Und...? Ich zieh mir da n neuen Container und fertig.
-
Und?
Wo hab ich das ausgeschlossen? -
Sorry aber das verstehe ich gerade nicht.
Iobroker sagt mir, dass ein Update auf 20.15.1 vorliegt.
Nun halte ich mich an die Empfehlungen hier, das Image neu zu installieren aber es ist noch die "Alte" Version im Image enthalten.
Soll man also doch wieder im Docker manuelle Updates ausführen?