Offizielles FHEM Docker Basis Image für verschiedene Plattformen

Begonnen von Loredo, 28 Juli 2018, 21:24:57

Vorheriges Thema - Nächstes Thema

kadettilac89

Zitat von: Sidey am 11 September 2023, 12:41:38Welche Architektur verwendest Du denn? Es wird nur für AMD64 inkludiert.

Mir fallen solche Fehler leider nicht auf, da ich das Image ohne Bodens verwende:

Läuft auf AMD64.

npm -v liefert fehlendes Modul 'timers/promises'. Das "Internet" sagt man solle auf node16 upgraden.

Fakt 1: node 14 ist schon aus der Wartung
Fakt 2: das verwendete Installationsscript "SCRIPT DEPRECATION WARNING"
Fakt 3: die neue Installationsroutine ist erst Node16 aufwärts verfügbar. Kompatibel zu gassistand? Alexa*-Module? ... https://github.com/nodesource/distributions#installation-instructions

Fraglich ob es lohnt hier das Dockerfile noch anzupassen wenn du sowieso nur noch mit "minimal" ohne diese Zusatzmodule weiter machen willst. Ggf. kannst du ein Rollback machen und die alte Version wieder in Dockerhub / Github als latest einchecken.

Ich habe nicht weiter mit dem Installationsscript getestet, ich bleibe auf einer älteren Version. Es gibt ja keine Probleme mit dem Container, es war nur eine neuere Basisversion von Debian.

Fehler (einfach npm -v)
npm -v
/usr/lib/node_modules/npm/lib/es6/validate-engines.js:31
    throw err
    ^

Error: Cannot find module 'timers/promises'
Require stack:
- /usr/lib/node_modules/npm/node_modules/@npmcli/agent/lib/util.js
- /usr/lib/node_modules/npm/node_modules/@npmcli/agent/lib/index.js
- /usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/remote.js
- /usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/cache/entry.js
- /usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/cache/index.js
- /usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/fetch.js
- /usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/index.js
- /usr/lib/node_modules/npm/node_modules/npm-registry-fetch/lib/index.js
- /usr/lib/node_modules/npm/lib/utils/replace-info.js
- /usr/lib/node_modules/npm/lib/utils/error-message.js
- /usr/lib/node_modules/npm/lib/utils/exit-handler.js
- /usr/lib/node_modules/npm/lib/cli-entry.js
- /usr/lib/node_modules/npm/lib/cli.js
- /usr/lib/node_modules/npm/bin/npm-cli.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:931:15)
    at Function.Module._load (internal/modules/cjs/loader.js:774:27)
    at Module.require (internal/modules/cjs/loader.js:1003:19)
    at require (internal/modules/cjs/helpers.js:107:18)
    at Object.<anonymous> (/usr/lib/node_modules/npm/node_modules/@npmcli/agent/                                                                                      lib/util.js:3:16)
    at Module._compile (internal/modules/cjs/loader.js:1114:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1143:10)
    at Module.load (internal/modules/cjs/loader.js:979:32)
    at Function.Module._load (internal/modules/cjs/loader.js:819:12)
    at Module.require (internal/modules/cjs/loader.js:1003:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/usr/lib/node_modules/npm/node_modules/@npmcli/agent/lib/util.js',
    '/usr/lib/node_modules/npm/node_modules/@npmcli/agent/lib/index.js',
    '/usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/remote.js',
    '/usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/cache/entry.js                                                                                      ',
    '/usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/cache/index.js                                                                                      ',
    '/usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/fetch.js',
    '/usr/lib/node_modules/npm/node_modules/make-fetch-happen/lib/index.js',
    '/usr/lib/node_modules/npm/node_modules/npm-registry-fetch/lib/index.js',
    '/usr/lib/node_modules/npm/lib/utils/replace-info.js',
    '/usr/lib/node_modules/npm/lib/utils/error-message.js',
    '/usr/lib/node_modules/npm/lib/utils/exit-handler.js',
    '/usr/lib/node_modules/npm/lib/cli-entry.js',
    '/usr/lib/node_modules/npm/lib/cli.js',
    '/usr/lib/node_modules/npm/bin/npm-cli.js'
  ]
}

Sidey

Zitat von: kadettilac89 am 11 September 2023, 20:58:36npm -v liefert fehlendes Modul 'timers/promises'. Das "Internet" sagt man solle auf node16 upgraden.

Das gibt es nur für Node <= 14. Verstehe nicht wieso es jetzt zum Problem wird, aber letztendlich ist das ein weiteres Problem, mit dem installierten Node im FHEM Container. Angefangen hat das ganze ja irgendwie auf ARM Plattformen, dass es nicht mehr ging.

Zitat von: kadettilac89 am 11 September 2023, 20:58:36Fakt 3: die neue Installationsroutine ist erst Node16 aufwärts verfügbar. Kompatibel zu gassistand? Alexa*-Module? ... https://github.com/nodesource/distributions#installation-instructions
Node 16 ist auch schon veraltet. Alexa-Fhem funktioniert bei mir einwandfrei auf mit dem node-20.6 Image:

https://github.com/fhem/alexa-fhem-docker/tree/v5.0.5

Zitat von: kadettilac89 am 11 September 2023, 20:58:36Fraglich ob es lohnt hier das Dockerfile noch anzupassen wenn du sowieso nur noch mit "minimal" ohne diese Zusatzmodule weiter machen willst. Ggf. kannst du ein Rollback machen und die alte Version wieder in Dockerhub / Github als latest einchecken.

Ich verstehe die Idee, aber nur wegen dem Node Fehler das Image mit älteren Paketen zu verwenden empfinde ich nicht unbedingt als "gute" Idee.
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Borkk

#1952
Zitat von: Sidey am 11 September 2023, 12:41:38Welche Architektur verwendest Du denn? Es wird nur für AMD64 inkludiert.

Mir fallen solche Fehler leider nicht auf, da ich das Image ohne Bodens verwende:

Ich habe alles auf einer Synology DS 220+ laufen. Bin von den RPI´s weg, wegen dem Speicher. In die Syno habe ich 32 GB gesteckt und ruhe ist :-)
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Sidey

Zitat von: Borkk am 12 September 2023, 09:33:00Ich habe alles auf einer Synology DS 220+ laufen. Bin von den RPI´s weg, wegen dem Speicher. In die Syno habe ich 32 GB gesteckt und ruhe ist :-)

Ich habe mir das angesehen. NPM 5.8 gibt es nicht mehr. Ein neueres NPM braucht auch ein neueres NodeJS. Irgendwo da wird vermutlich das Problem liegen.

Ich habe mal was probiert und ein Image zum Testen mit NPM 8.19 , NodeJS 16.20.2 gebaut:

ghcr.io/fhem/fhem-docker:3.3.0-rc1-bullseye
Ich freue mich über Rückmeldungen.


Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

kadettilac89

feedback: node/npm fehler sind weg. gassistant startet wieder

Borkk

habe es mal aus der Ferne eingespielt. alexa-fhem lässt sich starten. Nur das NPM Paket lässt sich nicht updaten/upgraden

Package Name   Installed Version   Update Version   Upgrade Version
npm           8.19.4                   10.1.0           10.1.0
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Sidey

Zitat von: Borkk am 14 September 2023, 22:09:08habe es mal aus der Ferne eingespielt. alexa-fhem lässt sich starten. Nur das NPM Paket lässt sich nicht updaten/upgraden

Du willst in einem Container auch keine Pakete upgraden, glaube mir :)
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Borkk

#1957
Ich glaube dir natürlich :-) Ich bin halt ein ordentlicher Mensch und schaue, dass in FHEM alle ,,Schilde" auf grün sind ;-). Es ist mir klar, dass dies flüchtig ist. Allerdings möchte ich positiv erwähnen, dass die FHEM Container bei mir eigentlich von Update zu Update sauber durchlaufen.

D.h. wenn du die Version 3.3.0 released, können wir wieder auf ...:latest umstellen?

Aber mal eine grundsätzliche Frage. Ich habe Homebridge in einem extra Container laufen und würde das im Grunde auch mit alexa-fhem machen können. Dann würde ich die Minimal Version des FHEM Docker Image nutzen. Macht das Sinn oder ist das quatsch. Ich hatte früher sogar in AWS einen Custom Skill am laufen, brauchte ihn aber nicht mehr, weil FHEM Connector alles konnte was ich brauche. Wie gesagt, eher eine grundsätzliche Frage, es läuft ja alles Prima auch wenn es nach einem Container Update manchmal etwas hakt.
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Sidey

Zitat von: Borkk am 15 September 2023, 10:11:11Es ist mir klar, dass dies flüchtig ist.
Das ist ein Punkt, aber du legst bei jeder Änderung einen neuen layer an. Die alten Daten werden nicht gelöscht.


Zitat von: Borkk am 15 September 2023, 10:11:11D.h. wenn du die Version 3.3.0 released, können wir wieder auf ...:latest umstellen?

Hmm, ja theoretisch.
Verlass dich aber nicht darauf, dass latest immer nodejs liefert.
Zitat von: Borkk am 15 September 2023, 10:11:11Aber mal eine grundsätzliche Frage. Ich habe Homebridge in einem extra Container laufen und würde das im Grunde auch mit alexa-fhem machen können. Dann würde ich die Minimal Version des FHEM Docker Image nutzen. Macht das Sinn oder ist das quatsch.

Das ergibt auf jeden Fall Sinn, denn der alexa-fhem image hat andere Updatezyklen als Perl und dass erneuert Du dann einfach wenn es ein neues nodejs oder alexa-fhem gibt.

Grüße
Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem