FHEM - Hardware > Server - Linux

Offizielles FHEM Docker Basis Image für verschiedene Plattformen

(1/272) > >>

Loredo:
Hallo,

auf Docker Hub stehen ab sofort 2 fertige Basis Docker Images für FHEM bereit:

* latest --> die aktuelle Stable Version des Docker Images, zusammen mit einem up-to-date FHEM.
* dev --> die aktuelle Entwickler Version des Docker Images, zusammen mit einem up-to-date FHEM.Alle Images werden für unterschiedliche Plattformen angeboten. Derzeit sind dies für Linux:

* x86-64/AMD64
* i386
* ARM32v5, armel
* ARM32v7, armhf
* ARM64v8, arm64Die richtige Plattform wird automatisch gewählt, wenn man das Image über das Meta-Repository läd:


--- Code: ---docker pull fhem/fhem

--- Ende Code ---

Ohne die Angabe eines Tags am Ende wird das "latest" Image geladen. Wenn man hinten ":dev" anhängt, bekommt man entsprechend das andere Image.
Statt über das Meta-Repository zu gehen, kann man auch direkt aus einem der Plattform-spezifischen Repositories das Image laden. Dort stehen dann auch weitere Tags bereit, beispielsweise wenn man eine ganz bestimmte Version fest verwenden möchte statt über die "Rolling Tags" zu gehen.


Der Source Code wird auf Github unter github.com/fhem/fhem-docker verwaltet.


Was bedeutet Basis Image?
Die Idee ist, dass FHEM in dem Image möglichst unverändert ausgeliefert wird und nur solche Voreinstellungen gemacht werden, die für ein Docker Image generell sinnvoll sind. Auf dieser Grundlage kann jeder dann bei Bedarf seine eigenes Dockerfile schreiben und dort "FROM fhem/fhem" als Ausgangslage verwenden. Vermutlich ist das aber selten notwendig, denn Zusatzmodule sind soweit bereits im Image integriert. Sollte etwas fehlen, wird es zentral für alle ergänzt.


Wie benutze ich das Image?
Das FHEM Installationsverzeichnis /opt/fhem wird (sicherlich nicht überraschend für die, die Docker kennen) als eigenes Volume definiert. Man kann also seine bestehende FHEM Installation beim starten des Containers über "-v /pfad:/opt/fhem" mit angeben. Wenn man das nicht tut, dann wird die FHEM Installation nach Zerstörung des Containers gelöscht. Ist das beim Start angegebene FHEM Verzeichnis leer, so wird FHEM dort aus dem Docker Image heraus installiert. Mit dieser Vorgehensweise kann man also seine Grundinstallation starten.


Was bietet das Image?
Neben vorinstallierten Paketabhängigkeiten sind folgende Dinge verfügbar:

* Healthcheck über Port 7072, der auch die FHEMWEB Instanzen überwacht
* Automatischer Neustart im Falle eines plötzlichen Absturzes (unabhängig von Docker "restart always")
* Anzeige der verwendeten Docker Image Version direkt in FHEM über integriertes FHEM Modul "DockerImageInfo"
* Möglichkeit ARM Images auf einem x86-64 System zu starten (über QEMU)
* Änderung der UID/GID, unter der FHEM läuftFolgende FHEM Einstellungen werden automatisch vorgenommen:

* attr global commandref modular
* attr global dnsServer <DNS_aus_resolv.conf>
* attr global mseclog 1
* attr global nofork 0
* attr global pidfilename ./log/fhem.pid
* attr global updateInBackground 1
* define DockerImageInfo DockerImageInfoDabei wird die dnsServer Einstellung bei jedem Neustart automatisch aktualisiert.


Wie kann ich das Image für mein eigenes FHEM Image verwenden?
Wenn du selbst ein FHEM Image baust, dann kannst du dich in die Start und Konfigurationslogik des Basis Images einklinken.
Die folgenden Scripte werden an den entsprechenden Stellen im Ablauf ausgeführt, wenn sie vorhanden sind:

* /pre-init.sh - Wird beim allerersten Start des Containers noch vor der FHEM Installation ausgeführt.
* /post-init.sh - Wird beim allerersten Start des Containers direkt nach der FHEM Installation ausgeführt.
* /pre-start.sh - Wird bei jedem Start von FHEM vor dem eigentlichen Start ausgeführt, auch mehrfach während ein Container läuft.
* /post-start.sh - Wird bei jedem Start von FHEM direkt nach dem Start ausgeführt, auch mehrfach während ein Container läuft.

chris1284:
Sehr gut,  endlich was offizielles. Kann ich GID und UID definieren, im GitHub ist dies nicht dokumentiert.

chris1284:

--- Zitat ---Das FHEM Installationsverzeichnis /opt/fhem wird (sicherlich nicht überraschend für die, die Docker kennen) als eigenes Volume definiert.
--- Ende Zitat ---
Wie verhält es wenn ich bisher in eine DB logge, ist SQLite/MySQL im Image integriert? Wie Verhält es sich bei Usern mit config-db?

Loredo:

--- Zitat von: chris1284 am 28 Juli 2018, 21:44:09 ---Kann ich GID und UID definieren, im GitHub ist dies nicht dokumentiert.

--- Ende Zitat ---

Wenn du einen Vorschlag hast das einzubauen, nur zu.
Habe ich im Developer Image eingebaut.


--- Zitat von: chris1284 am 28 Juli 2018, 21:49:07 ---Wie verhält es wenn ich bisher in eine DB logge, ist SQLite/MySQL im Image integriert?

--- Ende Zitat ---

Es ist ein Basis Image. SQlite als Dateibasierte Lösung funktioniert natürlich direkt. Ansonsten hat ein Docker Image nur einen einzelnen Zweck. Eine MySQL/MariaDB Datenbank gehört in einen eigenen, separaten Container und ist nicht Teil des Images. Eine automatisierte Migration von A nach B ist nicht vorgesehen.


--- Zitat von: chris1284 am 28 Juli 2018, 21:49:07 ---Wie Verhält es sich bei Usern mit config-db?

--- Ende Zitat ---

configDB kann über die Umgebungsvariable CONFIGTYPE beeinflusst werden:


--- Code: ----e CONFIGTYPE=configDB

--- Ende Code ---

rudolfkoenig:

--- Zitat ---die aktuelle Stable Version von FHEM, zusammen mit der aktuellen Stable Version des Docker Images
--- Ende Zitat ---
Ich weiss nicht genau, was diese Version enthaelt, aber wenn es 5.8 ist, dann bitte es nicht als stable bezeichnen: 5.8 ist nicht mehr oder weniger stabil, als ein durchschnittlicher "nightly". 5.8 ist als Ausgangspunkt gedacht, damit man irgendwo anfangen kann. Siehe auch https://fhem.de/#Download


P.S. Die Voreinstellung fuer updateInBackground ist 1 und fuer nofork ist 0, und es bleibt vermutlich auch dabei.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln