Offizielles FHEM Docker Basis Image für verschiedene Plattformen

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

Vorheriges Thema - Nächstes Thema

Loredo

Ich denke FunkOdyssey hat sich jetzt auf das Git Repository für das Docker Image bezogen.
Um Verwirrung zu vermeiden: Rudi bezieht sich bei seiner Erklärung auf das Subversion Code Repository von FHEM alleine.
Es ist also wichtig zu verstehen, dass es zwei verschiedene Code Quellen sind, die in dem Docker Image zusammengeführt werden.


Das sieht man auch daran, dass ein Docker Image nicht nur die Rolling Tags "latest" und "dev" hat, sondern auch entsprechend der Version aus der Kombination FHEM+Docker (zu sehen/nutzen aber nur in den Plattform-spezifischen Repositories auf Docker Hub, also z.B. fhem/fhem-amd64_linux).
Der Versions-Tag sieht dann so aus:


   5.8-s17052_1.0.1 --> FHEM tagged version + s(=Subversion) + Code revision number; _ als Trennzeichen; Version Tag aus dem Git Docker Repository


Ein Development Image hat auf jeden Fall noch den Zusatz "-dev" hinten dran. In der Regel hat auch ein Development Image dann zusätzlich noch die Git Revision mit drin, sofern die Revision nicht gleichzeitig auch noch einen Version-Tag hat. Also beispielsweise so:


  5.8-s17052_1.0.1-dev --> entspricht tatsächlich auch der aktuellen "latest" Version, da es noch keine Änderungen seit der letzten "latest" Version gab.


Wenn die erste Änderung im Dev-Image vorhanden ist, jedoch noch nicht in "latest" veröffentlicht, sieht ein Development Tag so aus:


  5.8-s17052_1.0.1-1-gXXXXXX-dev --> die erste Nummer hinter dem Versions-Tag (hier 1.0.1) entspricht der Anzahl von Commits seit dem Tag, hier also erstmal nur eine Änderung. Danach kommt das "g" für Git, gefolgt von der Kurzschreibweise für den entsprechenden Commit. Zur besseren Kennzeichnung folgt dann noch am Schluss der Branch, hier immer "-dev".
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

FunkOdyssey

Danke, euch beiden, für die umfassende Erklärung.
Mir sind die Git&SVN wie auch Tags/Branches/Forks etc. schon (seit Jahren und als Entwickler) bekannt.  😄

Ich hatte bei den Docker-"Varianten" mich gewundert, wie es von FHEM selbst eine DEV-"Variante" geben kann. Nun habe ich den Unterschied aber verstanden.

Ich finde Loredos Docker-Repositories schon recht geil. Ich bin auch echt froh, dass du den Kniff von Joscha Middendorf übernommen hast. Bis dato habe ich mir meine Images selber gebaut. Aber das könnte sich mit der neuen Flexibilität (pre/post-Scripts) jetzt ändern.

Geile Arbeit.

FunkOdyssey

#17
Ich wollte gerade mein eigenes lepresenced-Build auf dein Image umstellen.

Ist das wirklich gewollte, dass deine Docker-Images den Namen der Plattformen enthalten?
homeautomationstack/fhem-lepresenced-amd64_linux

Wäre es nicht übersichtlicher, wenn man dafür eigene Docker-Tags anlegt? Oder gibt es dafür evtl. auch schon ein Meta-Repository?

Morgennebel

Moin,


ist es möglich, vier FHEM-Instanzen parallel auf demselben Server via Docker zu betreiben, die miteinander mit FHEM2FHEM reden?

Ich hätte gerne:


  • Ein "Main"-FHEM
  • Ein FHEM für Internet Pull/Push-Dinge (Proplante, Wetter, Luftdaten usw.)
  • Ein FHEM für zeitkritische Dinge (Mischersteuerung)
  • Ein "DEV/QA"-FHEM

Dabei sollten das Main und DEV/QA-FHEM auf die Daten der beiden anderen FHEMs zugreifen können...

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Loredo

Das ist absolut möglich, dafür ist Docker prima geeignet. Einfach die entsprechende Anzahl Container starten und so konfigurieren, wie sie für die jeweilige Umgebung sein sollen.
Das wiederum ist dann aber keine Docker Frage mehr.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

FunkOdyssey

#20
@Loredo: Dürfte ich noch einmal kurz auf folgenden Post verweisen: https://forum.fhem.de/index.php/topic,89745.msg824810.html#msg824810
Könnte sein, dass du diesen vielleicht übersehen hast. Danke.




Könnte man im DockerHub-Projekt vielleicht einen Link auf das GitHub-Repo setzen?
Dies ist bei vielen Projekten der Fall und ganz hilfreich.

M.Schulze

Hallo,

Problem wird leider sein, das im Pfad /opt/fhem die persistenten Dateien des Nutzers nicht klar von den FHEM-Dateien aus dem Image getrennt sind. Ein einfaches Update via Image-Tausch (bevorzuge ich) scheint mir hier also nicht machbar zu sein - also zumindest mit diesem "Offiziellen" Image nicht. Vielleicht könnte man FHEM hier generell optimieren damit es nicht jeder selbst machen muss.

MFG
Muss ich das Licht aus machen?

Loredo

Wie Rudi erklärt hat, ist das auch nicht die richtige Art, um FHEM zu aktualisieren. Aus dem selben Grund gibt es kein Update über das Debian Paket.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

pipp37

Docker-Compose:
Vorerst super Arbeit!
Ich wollte mir gerade mal ein neues Image für Fhem bauen und habe deines gefunden.

Du könntest auch ein docker-compose.yml im Git anbieten.

Im Beispiel wird ein eigenes Docker Volume unter /var/lib/docker/volumes für fhem verwendet.

Einen Ordner /docker/fhem anlegen und  die Datei  docker-compose.yml erstellen.

Variante 1: ohne Modifikation mit host_network

version: '2'
volumes:
  files:
    driver: local

services:
  fhem:
    container_name: fhem
    image: "fhem/fhem"
    restart: always
    network_mode: "host"
    volumes:
      - "files:/opt/fhem"


Variante 2: mit Modifikation und host_network
Dabei ein Verzeichnis /docker/fhem/build  anlegen.
Darin die Datei  Dockerfile   erstellen.

FROM fhem/fhem
RUN apt-get update
RUN apt-get install -y mc libmime-lite-perl libsnmp-perl libnet-snmp-perl libsnmp-session-perl libwww-curl-perl snmp

Die fehlenden  Snmp Libs werden hier z.B. nachinstalliert.

/docker/fhem/docker-compose.yml

version: '2'
volumes:
  files:
    driver: local

services:
  fhem:
    container_name: fhem
   
    build: ./build
    restart: always

    network_mode: "host"
    volumes:
      - "files:/opt/fhem"


Der Docker Container wird im Verzeichnis /docker/fhem wie folgt verwaltet.

docker-compose build  # erzeugt/ändert den modifizierten Container der Variante 2
docker-compose up &  # erzeugt und startet den Container
docker-compose down # löscht den Container

Vmware-ESX-VM-Ubuntu 16.04 Docker Main-FHEM -> Raspberry Pi-B ser2net
HMLAN mit HomeMatic, Busware SCC433 stacked SCC868 (culfw), Jeelink, MAX Heizkörperthermostate, Enigma2 (Vudo2/DM800SE), Philips 55" Ambilight PHTV - WMBUS EnergyCam+Engelmann FAW, Intertechno-Komponenten, Ubiquiti mPower

M.Schulze

Wenn du Docker-Compose nutzt würde ich gleich noch einen File-Container und einen Reverse-Proxy-Container vorsehen. Dann kann man auf einem Server beliebig viele FHEM Installationen gleichzeitig laufen lassen. Macht aber auch so Sinn.
Muss ich das Licht aus machen?

Loredo

#25
Zitat von: FunkOdyssey am 06 August 2018, 15:45:47
Ich wollte gerade mein eigenes lepresenced-Build auf dein Image umstellen.

Ist das wirklich gewollte, dass deine Docker-Images den Namen der Plattformen enthalten?
homeautomationstack/fhem-lepresenced-amd64_linux

Wäre es nicht übersichtlicher, wenn man dafür eigene Docker-Tags anlegt? Oder gibt es dafür evtl. auch schon ein Meta-Repository?

Die anderen Images sind derzeit nicht für die breite Öffentlichkeit bestimmt. Sonst stände ja was darüber im ersten Post  ;)
Sie sind deshalb ja auch gar nicht im selben Docker Hub Repository unter hub.docker.com/r/fhem/.

Zitat von: FunkOdyssey am 17 August 2018, 16:13:53
Könnte man im DockerHub-Projekt vielleicht einen Link auf das GitHub-Repo setzen?Dies ist bei vielen Projekten der Fall und ganz hilfreich.

Jaein, den Link habe ich absichtlich nicht publiziert. Ich möchte derzeit nicht, dass unbedarfte Personen zu leicht mit der Nase darauf stoßen, weil ich dazu keine großartigen Fragen beantworten möchte und die anderen Repos - wie oben schon erwähnt - derzeit nicht für die breitere Masse bestimmt sind.
Auch geht es hier im Forum Post um ein FHEM Basis Image. Die anderen Images sind und werden nicht Teil davon sein, da gibt es eine ganz klare Trennung. Aus diesem Grund gibt es auch das Image als "Basis", ich nutze es selbst für weitere Entwicklungen und es ist dabei quasi als "Abfallprodukt" herausgepurzelt.

Im Grunde würden die Sourcen nach github.com/fhem/fhem-docker gehören, aber den Projektnamen hat schon jemand anderes (ungenutzt) belegt.

Zitat von: pipp37 am 18 August 2018, 10:50:50
Du könntest auch ein docker-compose.yml im Git anbieten.

Ich habe eine passende Beispiel docker-compose.yml hinzugefügt und die README auch um eine Beispielanwendung zusammen mit Git als Versionsverwaltung erweitert.


Zitat von: pipp37 am 18 August 2018, 10:50:50
Die fehlenden  Snmp Libs werden hier z.B. nachinstalliert.


Habe ich ins Basis Image mit aufgenommen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Shojo

Ich wollte nur mal ein Danke da lassen.
Das Image ist echt super und man sehr gut darauf seine eigene Installation aufbauen.
Ich habe tatsächlich für den zwitsch von meiner "normalen" Installation auf die Docker 45 min benötigt (mit allen Spielereien und einlesen ;) )

Gruß
Dennis
FHEM auf: Shuttle PC (x64) (Docker)
Bridge: SignalESP 433mHz, ConBee (deCONZ in Docker)
Rest: ESP8266, SONOFF, Sonos, Echo Dot, Xiaomi Vacuum (root), ESP RGBWW Wifi Led Controller, Node-RED, LEDMatrix, Pixel It

Loredo

Danke für das Feedback! Freut mich, dass es für dich so einfach lief :-)
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

supernova1963

#28
Ich wollte ebenfalls mal ein Danke da lassen.
Das Image ist echt super und man sehr gut darauf seine eigene Installation aufbauen.
Ich habe einfach mal unter OS X docker mit Kitematic ausprobiert. Es funktioniert nachdem ich das volume für /opt/fhem mit ~/opt/fhem definiert habe.

Gruß
Gernot

Edit: Mit Ausnahme:

  • des "DockerImageInfo" devices
  • der Einbindung von USB

FunkOdyssey

#29
Hallo,

ich starte FHEM aktuell wie folgt:

    fhem:
        container_name: fhem
        restart: unless-stopped
        cap_add:
            - SYS_ADMIN
            - NET_ADMIN
            - NET_RAW
        expose:
            - "7072"
            - "8083"
        ports:
             - 7072:7072
             - 8083:8083
        privileged: true
        image: fhem/fhem
        volumes:
             - /etc/localtime:/etc/localtime:ro
             - ./data/fhem/:/opt/fhem
        network_mode: "host"
        environment:
            TIMEOUT: 10
            TZ: Europe/Berlin


Heute habe nach in dem "docker-compose up" folgende Fehlermeldungen:

fhem          | /entry.sh: line 87: $(date +"$LOGFILE"): No such file or directory
fhem          | /entry.sh: line 87: $(date +"$LOGFILE"): No such file or directory
fhem          | /entry.sh: line 87: $(date +"$LOGFILE"): No such file or directory
fhem          | /entry.sh: line 87: $(date +"$LOGFILE"): No such file or directory
fhem          | /entry.sh: line 87: $(date +"$LOGFILE"): No such file or directory
fhem          | /entry.sh: line 87: $(date +"$LOGFILE"): No such file or directory
fhem          | /entry.sh: line 87: $(date +"$LOGFILE"): No such file or directory


Zeile 87 ist in der Function "PrintNewsLines".

Das Log ist in entry.sh wie folgt definiert:
LOGFILE="${FHEM_DIR}/log/fhem-%Y-%m.log"

Mein FHEM-Log ist jedoch auf täglich eingestellt: fhem-2018-09-03.log

Aber selber wenn ich ein Dummy-Log anlege, so bleibt der Fehler.

Hat jemand eine Idee?




Nachtrag:
Okay, ich musste die Rechte neu setzen und dann ging es.
Aber ich musste vorher ein "touch fhem-2018-09.log" ausführen.
Könnte man die Syntax der Log-Datei vielleicht per ENV mitgeben? Sonst habe ich spätestens im Oktober wieder ein Problem.

In FHEM will ich es gerne bei täglichen Logs lassen.