Offizielles FHEM Docker Basis Image für verschiedene Plattformen

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

Vorheriges Thema - Nächstes Thema

ThomasMagnum

So, ich habe es nun hinbekommen die entsprechenden Module per cpan zu installieren.

install HACKER/Net-XMPP-1.02.tar.gz
install DAPATRICK/XML-Stream-1.23.tar.gz


hat direkt die notwendige Version installiert. Danke für die Hilfe.
Jabber läuft allerdings immer noch nicht, da frag ich aber mal im Modul Thread nach.

Gruß, Thomas

thomasgloor

Hallo Spezis!

Ich habe eine Standalone-FHEM-Installation (Raspi2, Buster, alles aktuell), welche ich auf einen neuen Raspi4 neu mit Docker umziehen möchte. Schwupediwup und fast alles läuft! GUI ist da, erreichbar via Traefik...

Riesendankeschön für die Erstellung des Images an den Ersteller!!!

Ein Problem bleibt... Funktioniert in der Stanalone-Version, wirft aber beim Docker Fehler...

Ich habe ein paar Datumsformatierungen so realisiert:

attr WZ_LampeMorgen userReadings myTimeOn {{use Time::Piece;;;;my $time = localtime->strptime(ReadingsVal($NAME,"timer_01_c01","01.01.1900 00:00"), "%d.%m.%Y %H:%M");;;; $time->strftime("%d.%m.%Y %H:%M");;;;}\
},\
myTimeOff {{use Time::Piece;;;;my $time = localtime->strptime(ReadingsVal($NAME,"timer_02_c01","01.01.1900 00:00"), "%d.%m.%Y %H:%M");;;; $time->strftime("%d.%m.%Y %H:%M");;;;}\
}


Das läuft auf dem alten Raspi, schmeisst aber auf dem neuen folgenden Fehler:
2021.05.19 16:32:38 1: Error evaluating WZ_LampeMorgen userReading myTimeOn: Error parsing time at /usr/lib/arm-linux-gnueabihf/perl/5.28/Time/Piece.pm line 583.
https://forum.fhem.de/Themes/fhem-curve-green/images/bbc/code.gif
Part aus dem compose.yml:
  fhem:
    container_name: fhem
    image: fhem/fhem
    restart: unless-stopped
    security_opt:
        - no-new-privileges
    networks:
      - t2_proxy       
    ports:
       - 8083:8083
    volumes:
      - $DOCKERDIR/fhem:/opt/fhem   
    environment:
      - LANG=en_US.UTF-8
      - LANGUAGE=en_US:en
      - LC_ALL=en_US.UTF-8
      - LC_ADDRESS=en_US.UTF-8
      - LC_MEASUREMENT=en_US.UTF-8
      - LC_MESSAGES=en_US.UTF-8
      - LC_MONETARY=en_US.UTF-8
      - LC_NAME=en_US.UTF-8
      - LC_NUMERIC=en_US.UTF-8
      - LC_PAPER=en_US.UTF-8
      - LC_TELEPHONE=en_US.UTF-8
      - LC_TIME=en_US.UTF-8
      - TZ=Europe/Zurich
      - DOCKER_HOST=172.17.0.1
      - DOCKER_GW=172.17.0.1
     
    labels: 
      - "traefik.enable=true"
#     - "traefik.http.routers.fhem-rtr.service=fhem-docker"
      - "traefik.http.routers.fhem-rtr.entrypoints=https"
      - "traefik.http.services.fhem.loadbalancer.server.port=8083"     
      - "traefik.http.routers.fhem-rtr.rule=Host(`fhem.$DOMAINNAME`)"
      - "traefik.http.routers.fhem-rtr.tls=true"
      - "traefik.http.routers.fhem-rtr.tls.certresolver=dns-cloudflare" # Comment out this line after first run of traefik to force the use of wildcard certs
      - "traefik.http.routers.fhem-rtr.tls.domains[0].main=$DOMAINNAME"
      - "traefik.http.routers.fhem-rtr.tls.domains[0].sans=*.$DOMAINNAME"


Perl-Version ist die Gleiche, das Piece.pm ist identisch...sprptime mag mich nicht mehr...

Woran könnte das liegen?


Gruss
Thomas

Otto123

#1187
Hi Thomas,

mal das probiert in der Kommandozeile in einem FHEM in dem gleichen Dockerimage
{use Time::Piece;;my $time = localtime->strptime("01.01.1900 00:00", "%d.%m.%Y %H:%M");; $time->strftime("%d.%m.%Y %H:%M")}

Funktioniert :)

In Deiner Codezeile ist viel unnützes, aber wenn das Raw Def Code ist, sollte der funktionieren. Probiere mal meine Zeile bei Dir, wenn die geht musst Du einfach ein paar {} und ; löschen - aber eigentlich sollte es daran nicht liegen.
Die Meldung kommt mir komisch vor
ZitatError parsing time at
wieso sucht er time kleingeschrieben?

Edit:
Was mich beunruhigt ist das Ergebnis:
13.12.1901 21:45
Bei älteren Systemen ist das mMn korrekt:
01.01.1900 00:00

Gruß Otto
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

thomasgloor

Danke Otto!

Wo es letztendlich lag: vor Jahren vergessene von Hand generierte Readings, welche schlichtweg fehlten.... Die sind irgendwo bei der Migration liegengeblieben...

Dass localtime->strptime("01.01.1900 00:00", "%d.%m.%Y %H:%M") Müll liefert, ist sehr seltsam. Mit 1901 funktioniert es wie erwartet...

Gruss
Thomas



Otto123

Hallo Thomas,

das erklärt zumindest Deine Fehlermeldung.  8) Die kann man so provozieren:
{use Time::Piece;;my $time = localtime->strptime("01.01.1890 00:00", "%d.%m.%Y %H:%M");; $time->strftime("%d.%m.%Y %H:%M")}

Gruß Otto
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

blackfire

Hallo,
habe als Hostsystem ein Server Ubuntu 20.04 und Docker installiert.
Von Docker habe ich das Image fhem/fhem:latest deploynt.

Fhem läuft!
wie kann ich jetzt Node.js Packages Updaten? von Fhem aus?
ein "update all" habe ich ausgeführt

hat einer eine Idee?





P.A.Trick

Zitat von: blackfire am 26 Mai 2021, 13:10:11
Hallo,
habe als Hostsystem ein Server Ubuntu 20.04 und Docker installiert.
Von Docker habe ich das Image fhem/fhem:latest deploynt.

Fhem läuft!
wie kann ich jetzt Node.js Packages Updaten? von Fhem aus?
ein "update all" habe ich ausgeführt

hat einer eine Idee?

Nimm mal das "upgrade all"!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

ch.eick

Zitat von: blackfire am 26 Mai 2021, 13:10:11
Hallo,
habe als Hostsystem ein Server Ubuntu 20.04 und Docker installiert.
Von Docker habe ich das Image fhem/fhem:latest deploynt.

Fhem läuft!
wie kann ich jetzt Node.js Packages Updaten? von Fhem aus?
ein "update all" habe ich ausgeführt
Moin,
ich habe gerade auch den Fhem Container aktualisiert und anschließend Node.js, weil es rot war. Das hat zwar etwas gedauert, war dann jedoch okay. Kannst Du das Problem genauer beschreiben?
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Hallo zusammen,
ich bräuchte nochmal eine kleine Schulung zur Aktualisierung einzelner Docker Containern wenn man docker-compose verwendet.

Bisher habe ich das neue Image mit einem docker pull geholt, danach den Container gestoppt und dann bin ich mir unsicher.

Wie kann ich aus einer gemeinsamen docker-compose dann einen einzelnen Container aktualisieren lassen?
Wenn ich ein "docker image rm xxxxx" ist das alte Image weg, jedoch fehlt doch dann die neue Container definition.

Ich bitte um Erhellung
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

P.A.Trick

Zitat von: ch.eick am 26 Mai 2021, 13:28:05
Hallo zusammen,
ich bräuchte nochmal eine kleine Schulung zur Aktualisierung einzelner Docker Containern wenn man docker-compose verwendet.

Bisher habe ich das neue Image mit einem docker pull geholt, danach den Container gestoppt und dann bin ich mir unsicher.

Wie kann ich aus einer gemeinsamen docker-compose dann einen einzelnen Container aktualisieren lassen?
Wenn ich ein "docker image rm xxxxx" ist das alte Image weg, jedoch fehlt doch dann die neue Container definition.

Ich bitte um Erhellung
    Christian

Ich nutze dafür einen eigenen Container. Vielleicht ist das auch etwas für dich?

https://github.com/containrrr/watchtower
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

ch.eick

Zitat von: P.A.Trick am 26 Mai 2021, 13:47:10
Ich nutze dafür einen eigenen Container. Vielleicht ist das auch etwas für dich?

https://github.com/containrrr/watchtower
Vielen Dank,
ich habe mal eben die Doku überflogen, verwendet das Tool die .yml Datei, die ich bereits definiert habe?
Das geht dann ja noch einige Schritte weiter, sieht aber sehr interessant aus.

VG
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Otto123

#1196
Zitat von: ch.eick am 26 Mai 2021, 13:28:05
Ich bitte um Erhellung
    Christian
Hi,

ich nutze zur Verwaltung Portainer :) und hab mir vor Wochen etwas aufgeschrieben: https://heinz-otto.blogspot.com/2021/01/container-schiff.html

Aber das Prinzip ist simpler als gedacht:
* das aktuelles Image laden (docker image pull <name> )
* dann docker-compose up -d -> macht den einzelnen neu ohne die anderen zu "berühren"!

Müllabfuhr:
docker image ls
docker image rm name # oder
docker image prune


Alle Befehle abgeschlossen mit --help geben Auskunft :)

Gruß Otto
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

kadettilac89

#1197
Zitat von: ch.eick am 26 Mai 2021, 13:28:05
Hallo zusammen,
ich bräuchte nochmal eine kleine Schulung zur Aktualisierung einzelner Docker Containern wenn man docker-compose verwendet.

Bisher habe ich das neue Image mit einem docker pull geholt, danach den Container gestoppt und dann bin ich mir unsicher.

Wie kann ich aus einer gemeinsamen docker-compose dann einen einzelnen Container aktualisieren lassen?
Wenn ich ein "docker image rm xxxxx" ist das alte Image weg, jedoch fehlt doch dann die neue Container definition.

Ich bitte um Erhellung
    Christian

Alle im docker-compose file

docker-compose pull  && docker-compose up -d      ..... optional noch ein "--remove-orphans" damit werden container gelöscht die nicht mehr in docker-compose enthalten sind


Ansonsten für einzelne

docker pull <image> && docker-compose up -d


Was meionst du mit der Container defintion, die Config ist im Docker-Compose-File, das Image pullst du

Edit, Otto hat parallel geantwortet ... lies dir mal alles durch und frage wenn noch was fehlt.

Wernieman

Ich muß gestehen, das ich immer Pro "Projekt" eine docker-compose.yml verwende. Wenn ich mal in einem "projekt" ein Container updaten muß, restarte ich immer das komplette Projekt.
- 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

blackfire

Zitat von: P.A.Trick am 26 Mai 2021, 13:18:45
Nimm mal das "upgrade all"!

Hallo,

wie hast Du Dein "upgrade" durchgeführt? Hast du eine kurze Anleitung für mich?

hast Du das über Fhem bzw. Terminal oder doch über Portainer gemacht?