Hauptmenü

Fhem Docker Image

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

Vorheriges Thema - Nächstes Thema

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.