Offizielles FHEM Docker Basis Image für verschiedene Plattformen

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

Vorheriges Thema - Nächstes Thema

passibe

Hmm. Wieso die container nicht starten und es einen exit-code 139 gibt – keine Ahnung. Das ist schon etwas verwunderlich. Ist das bei allen drei containern so oder nur bei googleweather?

Vielleicht ohnehin mal das Image auf 1.5.0 (bzw. latest) updaten, aber:
Verwendet das Image auch die richtige Architektur (also arm statt x86)? Nicht, dass da irgendwas schiefläuft.
Was gibt denn ein:sudo docker image inspect ghcr.io/fhem/fhempy-docker_google_weather:releases-1.4-beta | grep -e Architecture -e Os -e Variant
Und was passiert, wenn du den Container einfach mal ohne compose startest (und auch mit der aktuellsten Version)? Alsosudo docker run --rm ghcr.io/fhem/fhempy-docker_google_weather:latestKommt dann auch exit code 139?
Ggfs. auch da mal die Architektur checken, also:sudo docker image inspect ghcr.io/fhem/fhempy-docker_google_weather:latest | grep -e Architecture -e Os -e Variant

rallye

#2131
Ja, das ist bei allen drei Containern so. Ich spiele mit GoogleWeather herum, weil ich das nicht ganz so dringend benötige. Die beiden anderen sind essentiell für mich

Zitat von: passibe am 30 Januar 2025, 16:31:25Verwendet das Image auch die richtige Architektur (also arm statt x86)? Nicht, dass da irgendwas schiefläuft.
sudo docker image inspect ghcr.io/fhem/fhempy-docker_google_weather:releases-1.4-beta | grep -e Architecture -e Os -e Variant
        "Architecture": "arm",
        "Variant": "v7",
        "Os": "linux",

Den Container ohne Compose zu starten ändert leider nichts
sudo docker run --rm ghcr.io/fhem/fhempy-docker_google_weather:latest
sepp@RasPi5-Server:~/projects/frontproxy $ echo $?
139


Und auch hier scheint die Architektur zu passen
sudo docker image inspect ghcr.io/fhem/fhempy-docker_google_weather:latest | grep -e Architecture -e Os -e Variant
        "Architecture": "arm",
        "Variant": "v7",
        "Os": "linux",

Nachtrag:
Ich habe meine restlichen images überprüft und festgestellt, dass alle (evtl habe ich das eine oder andere vergessen) die selbe Architektur, nämlich "arm" haben, auch das Os mit "linux" ist ident, aber "Variant" ist bei den fhempy-images (doe allesamt mit RC 139 "abstürzen" bzw "loopen", bei allen anderen ist Variant leer:
sepp@RasPi5-Server:~/projects/frontproxy $ sudo docker image inspect ghcr.io/fhem/fhem-docker:latest | grep -e Architecture -e Os -e Variant
        "Architecture": "arm64",
        "Os": "linux",
sepp@RasPi5-Server:~/projects/frontproxy $ sudo docker image inspect ghcr.io/immich-app/immich-server:release | grep -e Architecture -e Os -e Variant
        "Architecture": "arm64",
        "Os": "linux",
sepp@RasPi5-Server:~/projects/frontproxy $ sudo docker image inspect ghcr.io/home-assistant/home-assistant:stable | grep -e Architecture -e Os -e Variant
        "Architecture": "arm64",
        "Os": "linux",
sepp@RasPi5-Server:~/projects/frontproxy $ sudo docker image inspect ghcr.io/fhem/fhempy-docker_fusionsolar:1.4.4 | grep -e Architecture -e Os -e Variant
        "Architecture": "arm",
        "Variant": "v7",
        "Os": "linux",
sepp@RasPi5-Server:~/projects/frontproxy $ sudo docker image inspect ghcr.io/fhem/fhempy-docker_tuya:1.4.4 | grep -e Architecture -e Os -e Variant
        "Architecture": "arm",
        "Variant": "v7",
        "Os": "linux",
sepp@RasPi5-Server:~/projects/frontproxy $ sudo docker image inspect portainer/portainer-ce:latest | grep -e Architecture -e Os -e Variant
        "Architecture": "arm64",
        "Os": "linux",
sepp@RasPi5-Server:~/projects/frontproxy $ sudo docker image inspect ghcr.io/fhem/alexa-fhem:5.1.0-beta6 | grep -e Architecture -e Os -e Variant
        "Architecture": "arm64",
        "Os": "linux",
sepp@RasPi5-Server:~/projects/frontproxy $ sudo docker image inspect eclipse-mosquitto | grep -e Architecture -e Os -e Variant
        "Architecture": "arm64",
        "Os": "linux",
sepp@RasPi5-Server:~/projects/frontproxy $ sudo docker image inspect ghcr.io/immich-app/immich-machine-learning:release | grep -e Architecture -e Os -e Variant
        "Architecture": "arm64",
        "Os": "linux",

Könnte dort das Problem seine Ursache haben?
LG Rallye
RaspiPi v4, HM-LGW, 6x HM-TC-IT-WM-W-EU, 11x HM-CC-RT-DN, 1x HUE Bridge, 4x HUE-RC, 5x HUE White&Color, 15xHUE White, 3xHM-LC-SW1-FM, 1xHM-LC-SW2-FM, 1x ConBeeII, 15x Shelly1, 5xShellyplug, Aquara: 2x Temp-Sensor, 1x Vibrationssensor, 2x Lichtsensor, 19x Tür/Fenstersensor

kennymc.c

Zitat von: passibe am 29 Januar 2025, 20:40:21Was da jetzt die saubere Lösung ist, das unter dem minimal-Image zum laufen zu kriegen (also entweder @INC zu ändern oder den Pfad von --local-lib-contained zu ändern) – da bin ich überfragt, das weiß aber bestimmt jemand anderes hier.

Ich nutze jetzt das normale Image und bin etwas weiter gekommen, hab aber immer noch Probleme.
Über cpm konnte Net::Rendezvous::Publish::Backend::Avahi nicht installiert werden bzw. dessen Abhängigkeit Net::DBus. Es wird DBus >=1.3.0 erwartet, die es aber gar nicht gibt, sondern maximal 1.2.0. Über apt install libnet-rendezvous-publish-backend-avahi-perl gibt es keine Fehler trotz derselben DBus-Version, die auch hier nur 1.2.0 ist.
Jetzt dachte ich eigentlich, dass ich einfach mit export PERL5OPT=-I/usr/share/perl5 den Pfad für apt hinzufüge aber das funktioniert im Buid-Teil nicht. Über perl -e 'print join("\n", @INC) . "\n";' wird der Pfad nicht mit angezeigt. Wenn ich aber in der Shell des laufenden Containers den Pfad über denselben Befehl hinzufügen wird er danach auch angezeigt. Was mache ich falsch?

services:

 fhem:
    build:
      context: .
      dockerfile_inline: |
        FROM ghcr.io/fhem/fhem-docker
        RUN <<EOF
        export PERL5OPT=-I/usr/share/perl5
        LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get update
        LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends avahi-utils build-essential libnet-rendezvous-publish-backend-avahi-perl
        LC_ALL=C apt-get autoremove -qqy && LC_ALL=C apt-get clean
        cpm install --show-build-log-on-failure --configure-timeout=360 --workers=$(nproc) --local-lib-contained /usr/src/app/3rdparty/ \
        IO::Async::Loop \
        Data::Peek \
        Net::Async::WebSocket::Server \
        Convert::Color \
        Net::Rendezvous::Publish \
        Array::Utils \
        Syntax::Keyword::Try
        EOF
    pull_policy: build
    restart: always
    security_opt:
      - apparmor=unconfined
    environment:
      - LOGFILE=./log/fhem-%Y-%m.log
      - FHEM_UID=1007
      - FHEM_GID=100
      - DOCKER_HOST=192.168.1.203
    network_mode: "host"
    volumes:
      - "/mnt/user/appdata/fhem/:/opt/fhem/"
      - "/var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket"

Wernieman

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

kennymc.c

cpm wird in den Beispielen empfohlen. Und für das was nicht damit funktioniert möchte ich apt nehmen aber dafür fehlt der Pfad, den ich nicht hinzufügen kann.

kennymc.c

Ich hab es jetzt hinbekommen aber über einen etwas anderen Weg:

services:

 fhem:
    build:
      context: .
      dockerfile_inline: |
        FROM ghcr.io/fhem/fhem-docker
        RUN <<EOF
        LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get update
        LC_ALL=C DEBIAN_FRONTEND=noninteractive apt-get install -qqy --no-install-recommends avahi-utils build-essential pkg-config libdbus-1-dev
        LC_ALL=C apt-get autoremove -qqy && LC_ALL=C apt-get clean
        cpm install --show-build-log-on-failure --configure-timeout=360 --workers=$(nproc) --local-lib-contained /usr/src/app/3rdparty/ \
        IO::Async::Loop \
        Data::Peek \
        Net::Async::WebSocket::Server \
        Convert::Color \
        Net::Rendezvous::Publish \
        Array::Utils \
        Syntax::Keyword::Try \
        Net::Rendezvous::Publish::Backend::Avahi \
        Net::DBus
        EOF
    pull_policy: build
    restart: always
    security_opt:
      - apparmor=unconfined
    environment:
      - LOGFILE=./log/fhem-%Y-%m.log
      - FHEM_UID=1007
      - FHEM_GID=100
      - DOCKER_HOST=192.168.1.203
    network_mode: "host"
    volumes:
      - "/mnt/user/appdata/fhem/:/opt/fhem/"
      - "/var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket"

Das Backend Avahi Paket über libnet-rendezvous-publish-backend-avahi-perl zu installieren hat leider nur noch mehr Probleme gemacht, da Net::DBus darüber doch nicht mitinstalliert wurde und das wiederum weitere nicht installierte Abhängigkeiten mitbrachte. Ich bin dann wieder zurück zur Variante über cpm und habe nochmal etwas nach der Meldung (D-Bus >= x.x.x is required) mit der zu niedrigen DBus-Version (1.2.0 statt 1.3.0, die nicht existiert) gesucht und herausgefunden, dass ich libdbus-1-dev dafür installieren muss. Das hat dann auch geholfen. pkg-config war auch notwendig für DBus über cpm.
Das hinzufügen eines Pfads zu @INC in der docker-compose geht übrigens über ENV PERL5OPT=-I/usr/share/perl5 in der Zeile vor RUN

isy

Moin zusammen,
ich versuche gerade ein FHEM Testsystem mit Docker aufzusetzen. Host ist ein AMD64 mit Debian 12.
Ein Test mit
docker run Hello-World funktioniert.

Die FHEM Installation habe ich (ohne root) durchgeführt mit
docker pull fhem/fhem. Das ist auch ohne FM durchgelaufen.

Beim Starten vom FHEM Container gibt es folgende FM
Unable to find image 'fhem:latest' locallyEin zweiter Pull gibt diese Meldung aus:

xx@FHEMTEST:~$ docker pull fhem/fhem
Using default tag: latest
latest: Pulling from fhem/fhem
Digest: sha256:35cffc139afbc116cc230b1523928829d4dce8697e08b186eb43143f95b06d41
Status: Image is up to date for fhem/fhem:latest
docker.io/fhem/fhem:latest
xx@FHEMTEST:~$

Da die Suche "im Thema" nicht mehr funktioniert, habe ich die FM im gesamten Forum gesucht, aber nichts gefunden.
Was ist bei meiner Installation verkehrt?

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

Otto123

Zitat von: isy am 17 Februar 2025, 11:04:53Da die Suche "im Thema" nicht mehr funktioniert,
Ein Workaround: gehe auf den drucken button und benutze die Suche im Browser ctrl+f
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

passibe

Zitat von: isy am 17 Februar 2025, 11:04:53Beim Starten vom FHEM Container
Zeig uns doch mal den Befehl oder die compose file, die du zum Starten des Containers nimmst.
Aber weil die Fehlermeldung "fhem:latest" sagt, vermute ich stark, dass du da – im Unterschied zu deinem pull-Command – nur "fhem:latest" schreibst und nicht "fhem/fhem:latest". Gib einfach auch beim Starten des Containers die vollständige Image-Bezeichnung an und dann wird das bestimmt funktionieren.

isy

Ich habe jetzt zumindest mal einen Start hinbekommen.
Letzte Meldung:
Protect this FHEM installation by defining an allowed device with define allowed allowed
You can disable this message with attr global motd none
Autosave deactivated
2025.02.17 12:19:35.108 1: usb create starting
2025.02.17 12:19:35.259 1: usb create end
2025.02.17 12:19:35.262 0: Featurelevel: 6.3
2025.02.17 12:19:35.262 0: Server started with 7 defined entities (fhem.pl:29402/2024-12-05 perl:5.036003 os:linux user:fhem pid:4594)
INFO: FHEM successfully started

Aber es erscheint kein Promt mehr?
Und unter der IP-Adresse des Debian-Systems 192.168.178.90:8083 lässt sich keine Seite öffnen.

Mal sehen!

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

passibe

#2140
Zitat von: isy am 17 Februar 2025, 12:50:44Letzte Meldung:
Was heißt das? Wo letzte Meldung? Warst du schon im Webinterface und dann ist es "abgestürzt"?

Zitat von: isy am 17 Februar 2025, 12:50:44Aber es erscheint kein Promt mehr?
Wo sollte ein Prompt erscheinen und er tut es nicht?

Zitat von: isy am 17 Februar 2025, 12:50:44Und unter der IP-Adresse des Debian-Systems 192.168.178.90:8083 lässt sich keine Seite öffnen.
Hast du Port 8083 auch durchgereicht?

Zeig uns doch mal dein compose file oder den Befehl, mit dem du den Container startest.
Und falls du es tatsächlich noch mit docker run-Befehl machst, erstell dir lieber jetzt schon eine compose-Datei, das ist viel einfacher zu warten für die Zukunft.

isy

Habe gerade wieder das Image gelöscht.
Also ich installiere (nach Info vom GitHub) mit:
docker pull ghcr.io/fhem/fhem-docker:5-bullseye
Dann starte ich mit:
docker run -d --name fhem -p 8083:8083 ghcr.io/fhem/fhem-docker:5-bookworm
Das läuft beim ersten Mal nicht durch, es wird ghcr... nachinstalliert.

Beim 2. Mal startet die FHEM Installation. Am Ende bleibt der Prozess hängen mit der obigen Meldung:
2025.02.17 12:19:35.262 0: Server started with 7 defined entities (fhem.pl:29402/2024-12-05 perl:5.036003 os:linux user:fhem pid:4594)
INFO: FHEM successfully started

"Info" ist die letzte Zeile, die man im Terminal (per ssh) sieht.
Nach "run....."  erfolgt keine Rückkehr zum Debian Linux Promt.


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

isy

Jetzt ist Docker also wieder leer:
xx@FHEMTEST:~$ docker images -a
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

Danke für's Supporten vergaß ich
Ein Weg wird erst zu einem Weg, wenn man ihn geht

passibe

Also erstmal, du pullst bullseye:
Zitat von: isy am 17 Februar 2025, 13:01:27docker pull ghcr.io/fhem/fhem-docker:5-bullseye
startest dann aber das bookworm-Image:
Zitat von: isy am 17 Februar 2025, 13:01:27docker run -d --name fhem -p 8083:8083 ghcr.io/fhem/fhem-docker:5-bookworm

Deshalb muss er da beim starten auch nochmal etwas pullen.

Dann: Mit -d als Option für docker run sollte der eigentlich detachen und dir schon gar keine Logmeldungen direkt über das Terminal ausgeben? Die solltest du dann nur mitdocker logs -f fhemsehen.

Aber versuch es doch erstmal ohne zu detachen, damit du genau siehst, was der Container macht.

Also jetzt zur Sicherheit erstmal:
docker stop fhem && docker remove fhemund dann nur
docker run --name fhem -p 8083:8083 ghcr.io/fhem/fhem-docker:5-bookwormDann warten bis es sagt, dass FHEM gestartet ist und dann versuchen, über den Browser zuzugreifen. Terminal währenddessen natürlich offen lassen.

Wenn das klappt, kannst du im Terminal mit ctrl+c FHEM wieder beenden. Dann kannst du es nochmal mit der -d-Option versuchen – wie gesagt, da solltest du aber keinen weiteren Output sehen, sondern nur den hash vom Container und das wars.

isy

Ok, mache ich.
Oben war ein Tippfehler beim Kopieren vom git hier ins Forum mit "Bullseye". Hatte natürlich Bookworm installiert.

Leider bei neuem pull FM:
xx@FHEMTEST:~$ docker pull ghcr.io/fhem/fhem-docker:5-bullseye
Error response from daemon: manifest unknown

Alles leer:
xx@FHEMTEST:~$ docker images -a
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

Schwieriger Start!
Ein Weg wird erst zu einem Weg, wenn man ihn geht