Offizielles FHEM Docker Basis Image für verschiedene Plattformen

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

Vorheriges Thema - Nächstes Thema

isy

Ein Weg wird erst zu einem Weg, wenn man ihn geht

passibe

Zitat von: isy am 17 Februar 2025, 13:36:55xx@FHEMTEST:~$ docker pull ghcr.io/fhem/fhem-docker:5-bullseye
Error response from daemon: manifest unknown
Es gibt ja auch kein 5-bullseye ... für Version 5 gibt es nur bookworm. Siehe hier: https://github.com/fhem/fhem-docker/pkgs/container/fhem-docker/versions?filters%5Bversion_type%5D=tagged

Ansonsten: Du musst nicht immer vorab pullen. Starte doch einfach mal den Container, so wie von mir hier vorgeschlagen: https://forum.fhem.de/index.php?topic=89745.msg1334172#msg1334172

Und dann halte dich mal an eine Version und spring nicht immer hin und her. Oder einfach erstmal immer latest benutzen ...

isy

Ein Weg wird erst zu einem Weg, wenn man ihn geht

Dirk070

Hallo zusammen,

ich nutze den Docker-Container schon recht lange und hatte aus diversen Gründen Mitte 2024 das Image eingefroren, also kein fhem:latest mehr gezogen.
Nun möchte ich wieder auf den aktuellen Stand (Docker auf einer Syno). Wenn ich den latest ziehe, hagelt es Fehlermeldungen im Log, Beispiel:
Can't locate RPC/XML/Client.pm in @INC (you may need to install the RPC::XML::Client module) (@INC contains: ./lib ./FHEM . /usr/local/lib/perl5/site_perl/5.36.3/x86_64-linux-gnu /usr/local/lib/perl5/site_perl/5.36.3 /usr/local/lib/perl5/vendor_perl/5.36.3/x86_64-linux-gnu /usr/local/lib/perl5/vendor_perl/5.36.3 /usr/local/lib/perl5/5.36.3/x86_64-linux-gnu /usr/local/lib/perl5/5.36.3 ./FHEM/lib) at ./FHEM/88_HMCCURPCPROC.pm line 30, <$fh> line 1364.
2025.03.08 16:54:16 0: Can't locate JSON.pm in @INC (you may need to install the JSON module) (@INC contains: ./lib ./FHEM . /usr/local/lib/perl5/site_perl/5.36.3/x86_64-linux-gnu /usr/local/lib/perl5/site_perl/5.36.3 /usr/local/lib/perl5/vendor_perl/5.36.3/x86_64-linux-gnu /usr/local/lib/perl5/vendor_perl/5.36.3 /usr/local/lib/perl5/5.36.3/x86_64-linux-gnu /usr/local/lib/perl5/5.36.3 ./FHEM/lib) at ./FHEM/37_harmony.pm line 11, <$fh> line 997.

Im Ergebnis startet Fhem nicht und der Container wird gestoppt:
BEGIN failed--compilation aborted at ./FHEM/88_HMCCURPCPROC.pm line 30, <$fh> line 1364.
ERROR: Fatal: No message from FHEM since 60 seconds that server has started.
INFO: Stopping container. Bye!

Hat sich etwas signifikantes hier im Docker Basis Image geändert? Sind die bisher integrierten Komponenten nun nicht mehr direkt enthalten?
Entschuldigt die Frage, ihr habt das sicher diskutiert, ich finde nur leider gerade die Info nicht. Wäre nett, wenn ihr mir kurz helfen könntet.

Danke und schöne Grüße
Dirk

passibe

Zeig bitte mal dein compose file oder den docker-run-Befehl, mit dem du den Container startest.

Im Image
ghcr.io/fhem/fhem-docker:latestist sowohl RPC::XML::Client als auch JSON vorhanden:
root@faf8aba8934d:/opt/fhem# perldoc -l RPC::XML::Client
/usr/src/app/core/lib/perl5/RPC/XML/Client.pm
root@faf8aba8934d:/opt/fhem# perldoc -l JSON
/usr/src/app/core/lib/perl5/JSON.pm

Wobei komischerweise dein @INC gar nicht /usr/src/app/code/lib/perl5 enthält ... hmmm

Dirk070

Danke für Deine Unterstützung.

Ich nutze dieses Image: https://github.com/fhem/fhem-docker

Für die Container nutze ich den Container Manager der Syno und Portainer.
Ich bin bei Docker definitiv ein Anfänger und habe die Einstellungen von der funktionierenden Version aus 2024 kopiert.
Die Einstellungen sollten identisch sein.

Kann ich Dir die Infos, die Du benötigst aus Portainer ziehen?

passibe

Kenne mich mit Portainer nicht so gut aus, aber das sollte die compose files im Portainer volume unter /data/compose/ speichern. Wo das allerdings bei dir gemounted ist, keine Ahnung. Vielleicht kann man sich das compose file auch auf der Weboberfläche ansehen.
Ansonsten kannst du vielleicht ein paar Screenshots von den Einstellungen machen?

Oder sonst poste einfach mal die Ausgabe vonsudo docker inspect <name-des-FHEM-containers>
Vielleicht noch: Was passiert denn, wenn du mal einen neuen, leeren Container startest und z.B. dort testweise mal ein harmony-Device anlegst?

rabehd

Zitat von: passibe am 10 März 2025, 14:24:59Vielleicht kann man sich das compose file auch auf der Weboberfläche ansehen.
Dort gebe ich sie ein und sehe sie somit auch dort.
Menüpunkt: Stacks
Auch funktionierende Lösungen kann man hinterfragen.

Dirk070

#2153
Zitat von: passibe am 10 März 2025, 14:24:59Kenne mich mit Portainer nicht so gut aus, aber das sollte die compose files im Portainer volume unter /data/compose/ speichern. Wo das allerdings bei dir gemounted ist, keine Ahnung. Vielleicht kann man sich das compose file auch auf der Weboberfläche ansehen.
Ansonsten kannst du vielleicht ein paar Screenshots von den Einstellungen machen?

Oder sonst poste einfach mal die Ausgabe von
sudo docker inspect <name-des-FHEM-containers>
Vielleicht noch: Was passiert denn, wenn du mal einen neuen, leeren Container startest und z.B. dort testweise mal ein harmony-Device anlegst?

Vielen Dank, mit dem Hinweis auf den Inspect ging es voran. Die Infos aus dem Inspect passten nicht zu der Anzeige in Portainer.
So gab es im lauffähigen Container Einträge in CapAdd und CapDrop im fehlerhaften aber nicht. In Portainer wurde bei beiden Container in den Capabilities die Einstellungen angezeigt.
Ich habe jetzt mal den lauffähigen Container mit Portainer kopiert und in der Kopie das Image geändert. Jetzt startet der Container und auch FHEM.

Eine Meldung ist noch im Log, muss hierzu etwas nachinstalliert werden?

Can't locate Math/Round.pm in @INC (you may need to install the Math::Round module) (@INC contains: ./FHEM/lib ./lib ./FHEM . /usr/src/app/core/lib/perl5/5.36.3/x86_64-linux-gnu /usr/src/app/core/lib/perl5/5.36.3 /usr/src/app/core/lib/perl5/x86_64-linux-gnu /usr/src/app/core/lib/perl5 /usr/src/app/3rdparty/lib/perl5/5.36.3/x86_64-linux-gnu /usr/src/app/3rdparty/lib/perl5/5.36.3 /usr/src/app/3rdparty/lib/perl5/x86_64-linux-gnu /usr/src/app/3rdparty/lib/perl5 /usr/local/lib/perl5/site_perl/5.36.3/x86_64-linux-gnu /usr/local/lib/perl5/site_perl/5.36.3 /usr/local/lib/perl5/vendor_perl/5.36.3/x86_64-linux-gnu /usr/local/lib/perl5/vendor_perl/5.36.3 /usr/local/lib/perl5/5.36.3/x86_64-linux-gnu /usr/local/lib/perl5/5.36.3) at (eval 749) line 2.
BEGIN failed--compilation aborted at (eval 749) line 2.

Dirk070

#2154
Zitat von: rabehd am 10 März 2025, 14:51:35
Zitat von: passibe am 10 März 2025, 14:24:59Vielleicht kann man sich das compose file auch auf der Weboberfläche ansehen.
Dort gebe ich sie ein und sehe sie somit auch dort.
Menüpunkt: Stacks

Danke Dir, den Bereich Stacks hatte ich gestern entdeckt. Ich wollte dann mal ein Test-Stack anlegen über den Webeditor und habe diese Vorlage per Copy&Paste genutzt: https://github.com/fhem/fhem-docker/blob/dev/docker-compose.yml
Das führt in Portainer zu diesem Fehler und dazu findet sich im Web einiges an Diskussion, aber leider habe ich keine Lösung gefunden. Kennst Du Dich damit aus und könntest mir helfen?

Failed to deploy a stack: compose build operation failed: listing workers for Build: failed to list workers: Unavailable: connection error: desc = "error reading server preface: http2: frame too large"
Spannenderweise gibt es den Fehler bei einem Hello-World-Beispiel nicht:
version: "3"            # Version der compose file reference
services:               # Hier beginnt die definition der Services
  hello_world:          # Name des ersten Service
    image: hello-world  # Verwendetes Docker Image

pink99panther

#2155
Hallo Dirk070

so hab ich es auf meiner Synology unter portainer-stack laufen
auf der Filestation ein Verzeichnis fhem unter docker anlegen.
Die Datei aus dem Webeditor unter Stack in Portainer sieht bei mir
so aus

version: '2.4'

networks:
  fhem_nw:                             # Name des Netzwerks innerhalb des Stacks
    driver: bridge
    ipam:
      config:
        - subnet: 172.26.0.0/16       # Subnetz
          gateway: 172.26.0.1         # Gateway
          ip_range: 172.26.0.1/24     # Adressbereich
services:
  fhem:
    image: ghcr.io/fhem/fhem-docker:latest
    restart: always
    networks:
      - fhem_nw
    ports:
      - "8083:8083"
      - "1883:1883"
    volumes:
      - "/volume1/docker/fhem/:/opt/fhem/"

passibe

Zitat von: Dirk070 am 11 März 2025, 14:35:36Eine Meldung ist noch im Log, muss hierzu etwas nachinstalliert werden?
Hmm, ja, es scheint, als würde es Math::Round im Image nicht geben. Finde ich ein bisschen komisch, ist ja jetzt nicht die unwichtigste aller Funktionen/Module.

Du kannst das wie auf GitHub beschrieben mit einem individuellen "build"-Teil am Anfang des compose files machen, am besten über apt mit libmath-round-perl.

Dirk070

Zitat von: passibe am 11 März 2025, 23:23:17
Zitat von: Dirk070 am 11 März 2025, 14:35:36Eine Meldung ist noch im Log, muss hierzu etwas nachinstalliert werden?
Hmm, ja, es scheint, als würde es Math::Round im Image nicht geben. Finde ich ein bisschen komisch, ist ja jetzt nicht die unwichtigste aller Funktionen/Module.

Du kannst das wie auf GitHub beschrieben mit einem individuellen "build"-Teil am Anfang des compose files machen, am besten über apt mit libmath-round-perl.

Ok, Danke, im Image aus dem letzten Jahr war es drin, da kommt die Meldung nicht.
Das Nachinstallieren schaue ich mir an, ich würde es dann direkt mit dem Stack im Portainer versuchen, dazu muss ich noch die Vorlage von pink99panther anpassen, ich habe da einigen Volumes etc. mehr.