klein0r / fhem-docker

Just a template for a preconfigured fhem with mysql, mqtt and some other features in a docker environment
https://haus-automatisierung.com/
71 stars 55 forks source link

container ohne docker compose #8

Closed Homer-Sim closed 5 years ago

Homer-Sim commented 6 years ago

Hallo,

ich suche seit einiger Zeit nach einem FHEM Container der funktioniert. Kann man deinen Container auch mit so einem ähnlichen Kommando zum Öaufen bekommen?

docker run -d \ --name=fhem \ -v /docker/config/fhem:/opt/fhem -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro \ -p 8070:8083 -p 8071:8084 -p 8072:8085 -p 2222:2222 -p 9001:9001 -p 7072:7072 \ --device=/dev/ttyUSB0 \ pipp37/fhem_jessie

der angegebene Container ist version 5.6 ... und wird wohl nicht mehr gepflegt Danke

stauraum commented 6 years ago

Das geht quasi ohne Probleme. Erst den Container bauen.

Im FHEM-Verzeichnis dieses git-repos:

docker build -t "DeinImageName" .

Und dann Dein run cmd.

docker run -d [ ... ] "DeinImageName"

Homer-Sim commented 6 years ago

Hallo stauraum,

Ist das nun bezogen auf deinen Container oder meinst du einen x-beliebigen? Ich habe auch viele Container gesehen die irgendwie noch "Zusatz" (MQTT) oder so aufführen. Braucht man das zu Beginn? Sorry für das viele Fragen, aber ich versuche mich gerade in das Thema einzuarbeiten.

Danke

hvorragend commented 6 years ago

Am Rande:

Es heißt "docker build".

Und es ist egal, welche FHEM-Version heruntergeladen wird. Nach dem Ausführen eines Updates in FHEM ist die Version wieder tagesaktuell.

Nichtsdestotrotz ist pipp37/fhem_jessie ein wenig hinterher. Ich persönlich finde den supervisord-Ansatz katastrophal.

Aber was hat das alles mit diesem GitHub-Projekt zu tun? :-) Wäre das nicht eher etwas für ein Forum?

stauraum commented 6 years ago

@hvorragend geändert ;-)

@Homer-Sim erstmal bezogen hier auf Matthias seinen Container. Aber das kannst Du natürlich auf jeden beliebigen Container adaptieren. Ob Du MQTT benötigst komtm darauf an, welche Devices Du ansprechen möchtest. Zum erstmal damit spielen wirst Du es nicht brauchen.

Aber was mir da natürlich gerade einfällt. Bei Matthias seiner Umgebung hier ist natürlich noch viel mehr drinnen. MySQL, Node-Red etc. Seine Beispiel-Konfiguration ist natürlich auf diese gesamte Umgebung ausgelegt. Da müsstest Du dann kräftig händisch reinfassen um das zu ändern ...

Homer-Sim commented 6 years ago

Sorry, dass ich nochmal hier mich ausheule. Ich habe nun zwei ganze Abende damit verbracht einen Container zum Laufen zu bekommen, ohne Erfolg. Ich habe sehr viele aus dem Dockerhub ausprobeirt. Das mit dem supervisor ging, aber nur kurz ... Dann habe ich zum Schluss dein Dockerfile aus dem fhem Verzeichnis genommen und die start.sh fhem.pl/.cfg copiert. Das endet mit diesem Fehler: Can't locate RTypes.pm in @INC (you may need to install the RTypes module) (@INC contains: . /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/x86_64-linux-gnu/perl5/5.20 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl) at /opt/fhem/fhem.pl line 534.

Ich will doch nur einen ganz einfachen FHEM Container testen ... Ich habe so gar keine Ahnung mehr ...

hvorragend commented 6 years ago

Siehe: https://forum.fhem.de/index.php?topic=78889.0

hvorragend commented 6 years ago

Und warum nimmst du nicht diese Variante hier?

Homer-Sim commented 6 years ago

schon probiert

es fehlen die hier COPY data/fhem*.cfg ./

Warum wird eigentlich das nicht mit installiert? da hab ich dann die von hier genommen ... das will nicht

Homer-Sim commented 6 years ago

Mein letzter Strohhalm,

ich habe folgendes im Dockerfile

`#Define FHEM volume to do backups and instant changes VOLUME /opt/fhem

Copy Files and set rights

COPY ./start.sh ./

Start FHEM

CMD bash ./start.sh`

aber der Container bricht mit dem Fehler ab bash: ./start.sh: No such file or directory

im Verzeichnis, wo ich das build starte ist die Datei enthalten Was mir auch aufgefallen ist, das im docke rrun kommando enthaltene -v /docker/config/fhem:/opt/fhem sollte ja dafür sorgen, dass die Dateien aus dem Container auch im host zu sehen sind. aber das host verzeichnis ist leer ...

Habt ihr eine Idee an was das liegen kann?

stauraum commented 6 years ago

Zum ersten Problem habe ich nur eine Vermutung. Versuch mal im CMD den vollen Pfad zur start.sh anzugeben, bzw. das ganz zu ändern:

COPY start.sh / CMD bash /start.sh

Ich vermute, das der COPY und der CMD-Pfad unterschiedlich sind. Wenn Du mit absoluten Pfaden arbeitest, kommt es nicht zu solchen Problemen.

Zum zweiten Problem. Docker verhält sich hier soweit richtig. Es mounted mit -v das Verzeichnis in den Container, quasi als Overlay. Das ist natürlich leer und wird auch nicht automatisch aufgefüllt.

Die FHEM-Dateien musst Du dort vorher bereitstellen.

hvorragend commented 6 years ago

@Homer-Sim: Umgekehrt. Das Mounten mit -v ist dafür da, das Host-Verzeichnis im Container einzubetten.

hvorragend commented 6 years ago

Ich habe ehrlich gesagt keinen Überblick mehr, was Homer-Sim nun aktuell in seiner Umgebung hat. Ich finde das arg verwirrend, verschiedene Docker-Projekte in einem GitHub-Issue eines anderen FHEM-Docker-Projektes zu besprechen. Für solche Dinge kann ich dir das FHEM-Forum empfehlen.

Was mir auffällt: Die Reihenfolge ist oft auch ganz wichtig. Und hier wird immer über VOLUME gesprochen. Mir fehlt in der Aufzählung aber die Definition des WORKDIR. Dann ist die Handhabung relativer Pfade viel einfacher. Und auch nur dann, wenn WORKDIR vorher festgelegt. wird.

Ein weiteres FHEM-Projekt: https://github.com/3rdmaennchen/docker_test/blob/master/fhem/Dockerfile

Ich habe meine eigene Docker-Umgebung leider nicht auf GitHub liegen. Sonst würde ich dir einen schlankeren Weg ohne supervisord & Co. zeigen können. Die Variante von 3rdmaennchen war mir auch ein wenig zu komplex gestaltet. Aber gerade auf hub.docker.com gibt es doch zig verschiedene FHEM-Projekte, die doch per Einzeiler gestartet werden können. Warum also für den Anfang(?) mit Dockerfile beschäftigen.

Ich würde folgende Lernphase vorschlagen:

Nachtrag: Ich habe mir das noch einmal angeguckt. Der Aufbau der klein0r-Umgebung ist für den Einstieg sehr hilfreich. Der hat das gut gemacht. Vor allem auch ohne SchnickSchnack (supervisord). Ich habe mitbekommen, dass Matthias sein Projekt vor einiger Zeit komplett umgestrickt hat und den FHEM-Core vollständig ins Repository gepackt hat.

Ich verstehe nur nicht, wieso du nicht einfach https://github.com/klein0r/fhem-docker/blob/master/fhem/Dockerfile nutzt? Ich kann hier im Issue nicht erkennen, dass es damit ein Problem gibt. Oder habe ich etwas überlesen. Warum die verschiedenen Container-Ansätze vermischen?

MalibuKoKo commented 6 years ago

I migrated my FHEM installation based from pipp37/fhem_jessie => to klein0r/fhem-docker with success.

If your are in the same case than me, i suggest to you start manually fhem in order to read, analyse and correct multipes issues. Why ? Because the developper cannot anticipate every usage you have done with your previous installation.

Indeed, according to your usage; you can need some extras packages, examples:

In the Dockerfile you will have to add multiple RUN apt-get install ... RUN cpan

In my case, I appended in the Dockerfile CMD tail -f /dev/null in order to stay the container alive if an error is occured during initialisation of fhem. I start manually fhem & observe the output witk docker exec -it fhemdocker_fhem_1 bash /opt/fhem/start.sh

You have to observe the output, examples :

Let's search packages which contains missing's commands and add them in your Dockerfile...

klein0r commented 5 years ago

Ich mache das mal zu, mittlerweile gibt es ja auch längst https://github.com/fhem/fhem-docker (was hier im compose nun auch genutzt wird)