Hauptmenü

Fhem Docker Image

Begonnen von Steffen, 10 November 2017, 18:21:49

Vorheriges Thema - Nächstes Thema

Steffen

Hallo!

Ich habe mich ein wenig in das Format Docker eingearbeitet und über eine Dockerfile ein Image mit Fhem erstellt und erfolgreich gestartet.
Ich weiß das wenn der Container sich beendet alle einstellungen verschwinden, nun dachte ich wenn man ein  "commit" nach ein einem "detach" ausführt speichert er die Fhem-Config von Fhem auch ins neue Image aber das tut docker leider nicht zumindest nicht mit der fhem-config, ein von mir erstellter Test ordner bleibt bestehen im neuen image.

Wie löst ihr das mit docker? Ich würde wirklich gerne ohne Volumen zu mounten nur mit image/container Arbeiten, gibt es da vielleicht einen Weg?

Mfg Steffen

Wernieman

Entweder mit Volumen oder mit "bind" außerhalb ...

Auch wenn ich fhem eher nativ laufen lasse ...
- 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

Steffen

Ich fand das Thema mit Docker ebend spannender mit unabhängigkeit gegenüber von Host oder Datei Systemen, mit gemounten Volumen ist man ja nun schon wieder deutlich gebundener ans Host System.

Was ich nicht verstehe das ein commit ebend die Test datei behält aber nicht die änderung in der cfg?!?

Mfg Steffen

ThoTo

Ich empfehle einen Umstieg auf configDB statt fhem.cfg und das DB-File dann vom Host zu mounten.
Die Daten im Container zu halten widerspricht ein wenig der Architektur von Docker.

D.h. du erzeugst das Image mit der aktuellen FHEM-Version, bereitest alles für configDB vor und startest dann einen Container:
Zitatdocker run -d -v /opt/configDB.db:/opt/fhem/configDB.db:rw -p 8083:8083 fhemimage

Dann liegt deine Config (+zB myUtils, gplots etc.) am Host unter /opt/configDB.db und ist vom Container unabhängig, du kannst sie von dort auch wegsichern.

LG Thomas
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)

Wernieman

Also ob Du jetzt die fhem.cfg oder die configDB vom Host holst ... da ist nicht configDB die Lösung, sondern das "Bind" um Host.

Man sollte auch darauf hinweisen, das Änderungen innerhalb vom Docker nicht so performant sind, wie im volumen/bind. Siehe Doku zu Docker

Ich persöhnlich würde übrigens in dem Falle NICHT sqllight, sondern richtig mysql/mariasql in einem 2. Docker verwenden. Das wäre die Idee von Docker mit Microservices,
- 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

ThoTo

Zitat
Also ob Du jetzt die fhem.cfg oder die configDB vom Host holst ... da ist nicht configDB die Lösung, sondern das "Bind" um Host.
Das hat ja auch niemand behauptet und wie du sagst es sind zwei Paar Schuhe.
Der Threadersteller wollte Lösungen und eine ist MyUtils, Gplot-Files, fhem.cfg etc. durch configDB abzulösen und dann in den Container zu mounten, das kann auch von Anfängern leicht umgesetzt werden.

Zitat
Man sollte auch darauf hinweisen, das Änderungen innerhalb vom Docker nicht so performant sind, wie im volumen/bind. Siehe Doku zu Docker
Ich persöhnlich würde übrigens in dem Falle NICHT sqllight, sondern richtig mysql/mariasql in einem 2. Docker verwenden. Das wäre die Idee von Docker mit Microservices,
Da hast du natürlich recht und gerade auch darum ist es ja wichtig die Dateien aus dem Container rauszubekommen.
Ich sehe es immer wieder dass Container mit VMs verwechselt werden und die Daten im Container bleiben, was absolut falsch ist.
Persönlich nutze ich für die ConfigDB SQLite, weil es absolut ausreichend ist, dem Zweck Genüge tut und in so gut wie allen Fällen auch schneller als Mysql/MariaDB ist  ;)
Ist FHEM mit DbLog im Spiel, siehe die Sache natürlich anders aus und Mysql/MariaDB sind wie ich finde notwendig.
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)

rudolfkoenig

Was passiert, wenn man im FHEM@Docker ein FHEM-update ausfuehrt?

ThoTo

Zitat von: rudolfkoenig am 11 November 2017, 16:42:26
Was passiert, wenn man im FHEM@Docker ein FHEM-update ausfuehrt?

Dann ist FHEM im Container up to date und solange dein Container läuft ist das alles kein Problem.

Ziel von Docker ist aber Daten und Applikationen zu trennen.
Darum soll es möglich sein problemlos einen neuen Container aus einem fhem-Image zu erzeugen, weil die Daten liegen ja am Host oder in einem Volume und werden nur in den Container gemountet.

D.h. du solltest genaugenommen das Image updaten und nicht den Container.
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)

Wernieman

Ansonsten legst Du den fhem-Ordner eben als "bind" extern an. Dann ist auch ein update persistend.

@ThoTo
Zitat...eine ist MyUtils, Gplot-Files, fhem.cfg etc. durch configDB abzulösen und dann in den Container zu mounten, das kann auch von Anfängern leicht umgesetzt werden.
Bezüglich "für Anfänger" sind wir verschiedener Meinung.

Aber das guten bei Unix (und FHEM), viele Wege führen zum Ziel mit jeweils vor/nachteilen ;o)
- 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

cfranz

Zitat von: Wernieman am 11 November 2017, 20:34:37
Ansonsten legst Du den fhem-Ordner eben als "bind" extern an. Dann ist auch ein update persistend.
Und für was sollte er dann Docker nutzen? Das macht irgendwie wenig Sinn. Das Konzept ist ja gerade, dass man die Daten außerhalb des Containers speichert. Wenn ich die Software aktualisieren möchte, dann baue ich ein neues Image.

Wernieman

Das Du das Programm, bzw. deren Abhängigkeiten "kapselst" ... erst in Kombination mit "Docker Swarm", Kupernetis u.Ä. mach eine Komplette Kapselung mit "auch "Programm innerhalb des Containers" einen Sinn. Da machst Du aber auch update außerhalb von FHEM.

Warum soll man eigentlich immer wieder einen neuen Container bauen sollen?
- 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

Steffen

Hallo!

Danke für diese Informationen, ich muss mich da ebend wohl noch weiter einarbeiten.

Ich habe schon versucht mein selbst erstelltes FhemImage über docker run -d -v /opt/fhem:/opt/fhem xxxx zu mounten und dachte das es so eine Art Spiegelung wäre aber
er stellt das Host Verzeichnis dann direkt in den DC(dockercontainer) ab, aber dann ist ja alles von dem vorher installierten Fhem weg, wie könnte
man es denn lösen das er die Daten vom DC ins Host Verzeichnis übernimmt?

Mfg Steffen

Wernieman

In dem Du vorher ein Backup machst ...

Wenn Du ein Verzeichnis direkt einmountest, WILLST Du, das es nicht gespiegelt, sondern direkt verändert wird ...
- 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

Steffen

Hallo,

Ist es möglich in einer Dockerfile schon den befehl zum Volumen Mounten zu geben?!?

Mfg Steffen

Wernieman

Stichwort: docker-compose
- 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

Steffen

Zitat von: Wernieman am 13 November 2017, 08:13:16
Stichwort: docker-compose

Ok habe ich jetzt mal versucht aber bekomme eine Fehler meldung und kann vielleicht sagen woran es liegt?!?


version: '2'

services: fhem: expose: - "8083" - "7072" ports: - "8083:8083" - "7072:7072" image: steffen/fhem2 privileged: true



root@debian:/Docker_Test# docker-compose up
Recreating 98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_dockertest_fhem_1 ... Recreating 98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_dockertest_fhem_1 ... error

ERROR: for 98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_98f73ae03f4c_dockertest_fhem_1 No such image: sha256:ca2cbdc721a44e301c78be6ec72deead353296e47c6526848d873a9df7efd943

ERROR: for fhem No such image: sha256:ca2cbdc721a44e301c78be6ec72deead353296e47c6526848d873a9df7efd943 ERROR: Encountered errors while bringing up the project.

Wernieman

Gib uns mal das Komplette "compose-file" ....

P.S. es gibt schon dieverse FHEM-Docker-Images bei auf dockerhub
- 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

Steffen

Hallo!

Mehr hatte ich in der "compose-file" noch gar nicht eingegeben, dachte für ein erstes einfaches starten würde es reichen?!

Das image steffen/fhem2 hatte ich selber erstellt über eine Dockerfile und wollte diese nun über compose starten.

Kann man den über compose keine eigenen images Starten???

Mfg Steffen

FunkOdyssey

Das YML-File ist schon wichtig.
Wenn du von "Image steffen/fhem2" sprichst, dann klingt das eher nach einem DockerHub-Image.
Ich vermute aber mal, dass du eher "build" meinst und nicht "image". Du hast doch sicherlich ein Image-Unterverzeichnis mit einem Dockerfile, oder?

Steffen

Hallo!

Nein es ist kein Docker-Hub image, hatte es selber über Dockerfile erstellt und ist unter eingabe "docker images" auch sichtbar mit id und Name "steffen/fhem2".

Im compose file, wird doch durch "build" erst das image gebaut wie ich es ja schon gemacht habe oder verstehe ich das Falsch???

Mfg Steffen

FunkOdyssey

Sorry, zeige uns doch bitte die Dateien. Ansonsten macht das Raten hier keinen Sinn.

Axxl

Zitat von: Steffen am 12 November 2017, 11:52:31
Ich habe schon versucht mein selbst erstelltes FhemImage über docker run -d -v /opt/fhem:/opt/fhem xxxx zu mounten und dachte das es so eine Art Spiegelung wäre aber
er stellt das Host Verzeichnis dann direkt in den DC(dockercontainer) ab, aber dann ist ja alles von dem vorher installierten Fhem weg, wie könnte
man es denn lösen das er die Daten vom DC ins Host Verzeichnis übernimmt?

Hallo Steffen,

ich bin auch letztens in ein Docker Container mit FHEM ungezogen. Stand vor dem gleichen Problem.
Ich binde das komplette opt/fhem verzeichnis. Habe eigentlich so im Betrieb keine Probeme.

Nun zu Deinem Problem mit dem initialen bind. Starte doch den Container mit einem bind auf ein temp verzeichnis.
Also z.b. : docker run -d -v /tmp/fhem:/tmp/fhem

Dann gehst du mal ins laufenden docker fhem container rein:
Bsp:
docker exec -it fhem /bin/bash

Dann kopierst Du das komplette /opt/fhem verzeichnis nach /tmp/fhem  (cp -r /opt/fhem /tmp/fhem)
Und wieder raus aus dem Container mit "exit"

Im Host dann einfach die Daten aus /tmp/fhem nach /opt/fhem kopieren
Und dann in Zukunft wieder den containter mit deinem "docker run -d -v /opt/fhem:/opt/fhem" starten.

Et Voila ..

Ok alles etwas hemdsärmelig .. aber so hab ich es halt aus Unwissen beim ersten bind gemacht.

Gruß,
Axel

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

Steffen

Hallo!

Jetzt habe ich es, musste ein Paar Container löschen.

root@debian:/Docker_Test# docker-compose down
Stopping dockertest_fhem_1 ... done
Removing dockertest_fhem_1 ... done
Removing network dockertest_default


nun wollte ich aber noch ein Volumen hinzufügen und dann kommt der fehler:

root@debian:/Docker_Test# docker-compose up -d
ERROR: In file './docker-compose.yml', volume must be a mapping, not an array.



root@debian:/Docker_Test# cat docker-compose.yml
version: '2'

services:
   fhem:
        ports:
            - "8083:8083"
            - "7072:7072"
        image: steffen/fhem2
        privileged: true

volumes:
       - /opt/fhem/

FunkOdyssey

Ich verstehe das mit dem ,,image: steffen/fhem2" noch nicht. So musst du doch vorab manuell ,,builden". Kannst du das Image bzw. das Dockerfile nicht einfach in das Unterverzeichnis legen und es in ,,build: fhem2" umbenennen?

Wernieman

volumes:
       - /opt/fhem/


Und da fehlt das Ziel, also z.B.:

volumes:
       - /opt/fhem/:/opt/fhem/


Hinweis:
Obige Lösung ist aus dem Kopf und da ich momentan genug Glühwein intus, ohne Gewähr!
- 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

FunkOdyssey


Steffen

Guten Morgen!

Also irgendwie stehe ich auf dem schlauch, wenn ich mit dieser Config starte ist Fhem nicht erreichbar:

version: '2'
services:
  fhem:
    image: steffen/fhem3
    ports:
     - "8083:8083"
    volumes:
     - /fhem/data:/opt/fhem


damit schon:

version: '2'
services:
  fhem:
    image: steffen/fhem3
    ports:
     - "8083:8083"
    #volumes:
     #- /fhem/data:/opt/fhem


mein Host Ordner sieht so aus:

root@debian:/Docker_Test# ls -l /fhem/data
insgesamt 284
-rw-r--r--  1 root root  39189 Nov 15 07:02 configDB.pm
drwxr-xr-x 40 root root   4096 Nov 15 07:02 contrib
drwxr-xr-x  3 root root   4096 Nov 15 07:02 demolog
drwxr-xr-x  4 root root   4096 Nov 15 07:02 docs
drwxr-xr-x  8 root root   4096 Nov 15 06:52 fhem
drwxr-xr-x  6 root root  20480 Nov 15 07:02 FHEM
-rw-r--r--  1 root root    744 Nov 15 07:02 fhem.cfg
-rw-r--r--  1 root root  15740 Nov 15 07:02 fhem.cfg.demo
-rwxr-xr-x  1 root root 141228 Nov 15 07:02 fhem.pl
drwxr-xr-x  2 root root   4096 Nov 15 07:02 log
-rw-r--r--  1 root root  35751 Nov 15 07:02 MAINTAINER.txt
-rw-r--r--  1 root root    935 Nov 15 07:02 README_DEMO.txt
drwxr-xr-x  8 root root   4096 Nov 15 07:02 www


habe ich da einen Denkfehler, das /fhem/data doch gemountet wird und Fhem auf Docker seite drauf zugreifen können müsste???

Mfg Steffen

Wernieman

#28
Denk bitte mal nach:
Du sagst /fhem/data ... wo denkt wohl der Deamon, liegt dieses? Bestimmt nicht in Deinem "Home-Ordner"
- 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

Steffen

Hallo,

so recht verstehe ich nicht was du meinst, laut docker ist doch "HOST:CONTAINER" aber habe viel versucht doch irgendwie finde ich den Fehler nicht?!

Kann das an der Pfad angabe liegen, habe es auch mit ./ versucht?!

Mfg Steffen

Wernieman

Wenn Du ./irgendeinverzeichnis angiebst, dann ist dieses eine "relative-Pfadangabe", dagegen ist ein /irgendeinverzeichnis eine Absolute vom root (/) aus gesehen. Der Unterschied ist "nur" der ".".

Deine Angabe "/fhem/data" bedeutet also, suche auf dem Host nach /fhem/data, vom root aus gesehen. Wenn Du jetzt auf der Konsole ein "ls /fhem/data" eingibst, wird Dein Pi bestimmt "meckern". Wenn Du obiges gelesen hast, solltest Du wissen warum.
- 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

Steffen

#31
Guten Morgen,

ich habe es erstmal soweit, denn es war nicht die Pfad Angabe die war doch richtig so,
es lag an den Rechten für Fhem denn die wurde im gemappten Volumen nicht übernommen.


root@87452f5a1149:/# ls -l /opt/fhem
total 284
drwxr-xr-x  6 1001 root     20480 Nov 15 17:50 FHEM
-rw-r--r--  1 1001 root     35751 Nov 15 07:56 MAINTAINER.txt
-rw-r--r--  1 1001 root       935 Nov 15 07:56 README_DEMO.txt
-rw-r--r--  1 1001 root     39189 Nov 15 07:56 configDB.pm
drwxr-xr-x 40 1001 root      4096 Nov 15 17:50 contrib
drwxr-xr-x  3 1001 root      4096 Nov 15 17:50 demolog
drwxr-xr-x  4 1001 root      4096 Nov 15 17:50 docs
-rw-r--r--  1 1001 root      1229 Nov 16 04:54 fhem.cfg
-rw-r--r--  1 1001 root     15740 Nov 15 07:56 fhem.cfg.demo
-rwxr-xr-x  1 1001 root    141228 Nov 15 07:56 fhem.pl
drwxr-xr-x  2 1001 root      4096 Nov 16 04:54 log
drwxr-xr-x  3 1001 dialout   4096 Nov 16 04:54 restoreDir
-rw-r--r--  1 1001 root         0 Nov 15 14:30 testH
drwxr-xr-x  8 1001 root      4096 Nov 15 17:50 www


Ich versuche gerade einen Weg zu finden, das die Rechte für Fhem über compose gesetzt werden.

nachtrag: leider finde ich keine so guten Weg, hat jemand eine Idee?

Mfg Steffen


Wernieman

der Container läuft mit root rechten, d.h. die Dateirechte im "Hostsystem" sind nicht relevant. Wie sieht denn jetzt Deine docker-compose aus?
- 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

Steffen

Hallo!

Hier meine compose-config:


root@debian:/docker# cat docker-compose.yml
version: '2'
services:
   fhem:
        ports:
            - "8083:8083"
            - "7072:7072"
        image: steffen/fhem3
        volumes:
           - /optH/fhem/:/opt/fhem
root@debian:/docker#


Ich versuche gerade über ein script das über compose gestartet wird, aber das klappt irgendwie auch nicht so recht...


root@debian:/docker# cat /optH/fhem/start.sh                                                                            #!/bin/bash
chown -R fhem /opt/fhem/

/etc/init.d/fhem start
root@debian:/docker#

Wernieman

/optH/fhem/:/opt/fhem
Bist Du Dir da mit dem "H" Sicher???

Was sagt denn ein:
ls -lha /optH/fhem/
- 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

Steffen

Guten Morgen!

Leider konnte ich mich erst jetzt melden doch ich hatte die Lösung gefunden und jetzt klappt erstmal alles wie es soll, ich werde mich da noch tiefer einarbeiten
denn das Thema Docker finde ich sehr spannend.

hier mal mein Config wie sie jetzt läuft...

Dockerfile

FROM debian:jessie

MAINTAINER Steffen Ewald <steffen.blogdns@googlemail.com>

ENV FHEM_VERSION 5.8
ENV DEBIAN_FRONTEND noninteractive
ENV TERM xterm

# Install dependencies
RUN apt-get update
RUN apt-get -y --force-yes install apt-utils
RUN apt-get upgrade -y --force-yes
RUN apt-get -y --force-yes install supervisor telnet wget git nano make gcc g++ apt-transport-https sudo perl build-essential snmpd snmp usbutils

# Install perl packages
RUN apt-get -y --force-yes install \
libavahi-compat-libdnssd-dev \
libalgorithm-merge-perl \
libclass-dbi-mysql-perl \
libclass-isa-perl \
libcommon-sense-perl \
libdatetime-format-strptime-perl \
libdbi-perl \
libdevice-serialport-perl \
libdpkg-perl \
liberror-perl \
libfile-copy-recursive-perl \
libfile-fcntllock-perl \
libio-socket-ip-perl \
libio-socket-ssl-perl \
libjson-perl \
libjson-xs-perl \
libmail-sendmail-perl \
libsocket-perl \
libswitch-perl \
libsys-hostname-long-perl \
libterm-readkey-perl \
libterm-readline-perl-perl \
libwww-perl \
libxml-simple-perl \
libdbd-sqlite3-perl \
libtext-diff-perl

# Install fhem
RUN echo Europe/Berlin > /etc/timezone && dpkg-reconfigure tzdata

RUN wget -qO - https://debian.fhem.de/archive.key | apt-key add -
RUN echo "deb https://debian.fhem.de/nightly ./" > /etc/apt/sources.list.d/fhem.list
RUN apt-get update
RUN apt-get -y --force-yes install fhem
RUN mkdir -p /var/log/supervisor

RUN mkdir /script
RUN mkdir /git_clone
RUN cd /git_clone
RUN wget https://raw.githubusercontent.com/Ewies/docker/master/supervisord.conf
RUN wget https://raw.githubusercontent.com/Ewies/docker_final/master/start.sh
RUN cp supervisord.conf /etc/supervisor/conf.d/supervisord.conf
RUN cp start.sh /script
RUN chmod +x /script/start.sh
# Ports
EXPOSE 8083


docker-compose.yml

version: '2'
services:
   fhem:
        ports:
            - "8083:8083"
            - "7072:7072"
        image: steffen/fhemfinal
        volumes:
           - /optH/fhem/:/opt/fhem
        entrypoint: ./script/start.sh


start.sh

#!/bin/bash

chown -R fhem /opt/fhem/

/usr/bin/supervisord


Mfg Steffen

Wernieman

Warum startest Du über den supervisord, wenn Du es auch direkt starten kannst?
- 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

Steffen

Zitat von: Wernieman am 20 November 2017, 07:56:41
Warum startest Du über den supervisord, wenn Du es auch direkt starten kannst?

weil sonst der Container nicht deamon Modus läudt, obwohl ich compose -d starte.
Warum das so ist konnte ich noch nicht vestellen.

Mfg Steffen

FunkOdyssey

Ich stehe gerade wieder vor der gleichen Entscheidung.
Fakt ist: Wenn du FHEM alleine im Container laufen lässt, dann geht das wunderbar. Siehe auch: https://forum.fhem.de/index.php/topic,71928.msg681278.html#msg681278 (Stichwort: nofork-Attribut).

Sobald aber SSH hinzukommt, wird ein Dienst benötigt, der FHEM und SSHD für dich startet und überwacht.
Zwar widerspricht das dem ursprünglichen Docker-Gedanken, aber die meisten FHEM-Container haben im Docker-Hub anscheinend supervisord.

Ich versuche mich gerade krampfhaft daran zu gewöhnen, auf SSHD zu verzichten und per "docker exec" auf die Container zuzugreifen.
Das macht die Container sauberer und schlanker.

Ich bin kein Docker-Profi, aber supervisord ist für mich ein Hilfsmittel, auf das ich gerne verzichten würde.


Wernieman

supervisord wiederspricht, wie Du sagst, 100% dem Docker Gedanke. 1 Container 1 Dienst!

sshd sollte man auch wirklich nicht im Container terminieren lassen. Denn was mache ich, bei einem 2. Container, der Zugriff braucht? container <> VM!

- 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

LuBeDa

Hallo,
hat es jemand hinbekommen beim Erstellen eines neuen Containers direkt einmal FHEM zu aktualisieren also quasi einen "update all" Befehl abzusetzen?

Derzeit nehme ich das Dockerfile von:
FROM debian:jessie

MAINTAINER Matthias Kleine <info@haus-automatisierung.com>


Da ist beim Start ein altes FHEM installiert und Module wie z.B. YAAHM fehlen.

ThoTo

Zitat von: LuBeDa am 21 November 2017, 19:45:24
Hallo,
hat es jemand hinbekommen beim Erstellen eines neuen Containers direkt einmal FHEM zu aktualisieren also quasi einen "update all" Befehl abzusetzen?

Derzeit nehme ich das Dockerfile von:
FROM debian:jessie

MAINTAINER Matthias Kleine <info@haus-automatisierung.com>


Da ist beim Start ein altes FHEM installiert und Module wie z.B. YAAHM fehlen.

Schau dir mal mein Github Repo an: https://github.com/t0th0mas/docker-smarthome
Ich habe die Dockerfiles meiner gesamten Umgebung hochgeladen, es fehlen nur noch die gesammelten Readme-Dateien 8)

Du kannst dir damit ein aktuelles FHEM Image bauen inkl. einem initialen Update.

LG Thomas
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)

LuBeDa

#42
[EDIT] Hat sich erledigt, PEBCAK ;D

Zitat von: ThoTo am 23 November 2017, 18:44:48
Du kannst dir damit ein aktuelles FHEM Image bauen inkl. einem initialen Update.

LG Thomas

Grundsätzlich eine sehr gute Umsetzung, leider hängt er hier:
---> c3978aad2770
Step 9/14 : COPY ./opt/fhem/FHEM/*.pm /tmp/
COPY failed: no source files were specified



Obwohl in dem Verzeichnis zwei *.pm Dateien sind. Den COPY Befehl davor macht er.

Ludger


ThoTo

Zitat von: LuBeDa am 24 November 2017, 09:18:48
[EDIT] Hat sich erledigt, PEBCAK ;D

Danke für die Rückmeldung  :) Freut mich dass es dann noch geklappt hat!

LG Thomas
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)

ChrisW

jemand eine idee wieso DOCKER FHEM meine DIskstation "Volume" auslastet ? 100% CPU 20 Ram 3 von 8 GB
Raspberry PI3 mit allem möglichen.

zimb0

Hi zusammen,
ich weiß - altes Thema und ewig nicht kommentiert, meine Frage geht aber in eine ähnliche Richtung.
Ich bin gerade dabei die ersten Schritte mit Docker zu gehen und möchte mir ein docker-compose für fhem bauen.

Eine Sache verstehe ich hierbei noch nicht ganz: Ich möchte erreichen, dass eigentlich nur die fhem.cfg, 99_myUtils.pm, /log, /www/gplot und /www/tablet auf den host umgeleitet wird.
(Wenn ich die Docker-Logik richtig verstanden habe sollte der Rest ja "dynamisch" aktualisiert werden könne, ohne dass meine Config verändert wird, deshalb diese Trennung ?).

Nun habe ich in meinem docker-compose folgende Einträge erfasst:

volumes:
      - /opt/docker/fhem/log:/opt/fhem/log
      - /opt/docker/fhem/www/gplot:/opt/fhem/www/gplot
      - /opt/docker/fhem/www/tablet:/opt/fhem/www/tablet
      - type: bind
        source: /opt/docker/fhem/fhem.cfg
        target: /opt/fhem/fhem.cfg
      - type: bind
        source: /opt/docker/fhem/99_myUtils.pm
        target: /opt/fhem/FHEM/99_myUtils.pm

Die Dateien / Ordner werden auch entsprechend umgeleitet, allerdings ist es so, dass der Container nach der Umleitung der myUtils wohl den kompletten fhem/FHEM - Ordner nicht mehr lesen kann.
Ich tippe hier auf falsch konfigurierte Rechte.

Fehlermeldung beim initialisieren dann z.B:
ZitatCan't locate RTypes.pm in @INC (you may need to install the RTypes module)

Ebenso tritt auf: Wenn der /opt/fhem/www/tablet umgeleitet ist wird keinerlei CSS im Webinterface dargestellt, was denke ich das gleiche Problem ist.

Könnt ihr mir hier etwas weiterhelfen?
THZ504