Ankündigung

Einklappen
Keine Ankündigung bisher.

Edomi im Docker-Container - revised

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Edomi im Docker-Container - revised

    Hallo miteinander,

    die Version 1.8 des Edomi-Dockerimages ist verfügbar. Dockerfiles incl. Dokumentation befinden sich auf GitHub und hier kann das Image bezogen werden. Folgende Anmerkungen dazu:
    • Ich habe das Basis-System in das Image starwarsfan/edomi-baseimage ausgelagert. Damit müssen nun nicht bei jedem Build die CentOS-Pakete heruntergeladen und installiert werden
    • Edomi selbst befindet sich im Image starwarsfan/edomi-docker
    • Es ist ein Mountpoint für das Verzeichnis /var/edomi-backups vorhanden, so dass die Backups auf einem Verzeichnis auf dem Host vorgehalten werden können
    • Es sind zwingend die folgenden Optionen bei docker run ... zu verwenden:
      • -p <host-port>:<container-port>
        Es ist zwingend notwendig, die verwendeten Ports mit jeweils einem solchen Statement in den Container zu mappen. Das betrifft insbesondere den http- resp. https-Port, den Port für den Websocket sowie die drei Ports für die KNX-Kommunikation. Werden weitere Ports verwendet, bspw. für UDP-Traffic aus eigenen Logiken heraus, müssen diese ebenfalls nach obigem Schema gemappt werden.
      • --restart=on-failure
        Diese Option wird benötigt, damit der Container via Edomi-Admin-UI gestoppt oder neu gestartet werden kann.
    • Der Container kann via Edomi-Update-Mechanismus auch direkt aktualisiert werden, wenn eine neue Edomi-Version vorliegt.
    • Wird der Container selbst gebaut, kann die Version des zu verwendenden Edomi-Archives angegeben werden. Damit ist es möglich, bei einem Edomi-Update selbst schnell einen neuen Container zu bauen. Konkret geht das dann so:
      Code:
      docker build -t starwarsfan/edomi-docker:latest --build-arg EDOMI_VERSION=EDOMI-Beta_154.zip .
      Damit wird das angegebene Archiv von http://edomi.de/download/install/ heruntergeladen und im Image installiert.
    Achtung: Insbesondere bei der Verwendung des Edomi-eigenen Update-Mechanismus ist eine gewisse Vorsicht geboten! Wird ein neuer Container angelegt (docker run ...), so wird dieser die Edomi-Version enthalten, welche das ursprüngliche Docker-Image enthält. Mitunter passen da aber die vorhandenen Backup-Daten nicht dazu, wenn es bereits eine neuere Edomi-Version gab und der Container via Edomi selbst auf die neueste Version aktualisiert wurde. Es sollte als dafür gesorgt werden, dass ein ein Backup der alten Edomi-Version gibt, welches nach einem erneuten docker run ... importiert und danach auf die neueste Edomi-Version aktualisiert wird.

    Feedback ist wie immer gern gesehen, also immer her damit!
    Zuletzt geändert von starwarsfan; 22.02.2018, 10:42. Grund: Updated with v1.8 based on Edomi 1.56
    Kind regards,
    Yves

    #2
    Hallo Yves,

    wollte heute mit edomi anfangen, super Timing also
    Vorab auch schon mal vielen Dank für die von dir geleistete Arbeit!

    Ich nehme an das Problem mit den Websockets ist dass edomi selbst fix diese Ports verwendet?

    Kommentar


      #3
      N'abend miteinander

      Zitat von MKHR Beitrag anzeigen
      Ich nehme an das Problem mit den Websockets ist dass edomi selbst fix diese Ports verwendet?
      Nein, das ist eher nicht das Problem. Es werden wie von jeder anderen solchen Applikation eben gewisse Ports verwendet, wobei der Websocket-Port sogar konfigurierbar ist (edomi.ini).

      Das Problem bei Edomi@Docker ist, dass es (mir) bisher nicht gelungen ist, die Websocket-Verbindung in den Container hinein aufzubauen. Ich war dabei schon so weit, dass ich im Container einen nginx-Proxy vor Edomi hatte, welcher dann die Websocket-Verbindung entsprechend modifiziert hat. Der Session-Aufbau ist ja dabei zu http identisch und erst im weiteren Verlauf wird dann zum ws-Protokoll gewechselt. Bei mir lief es soweit, dass ich mich in der Visu anmelden konnte und dann im Chrome-Developermode sogar entsprechende 200er Antworten von Edomi bekommen habe. Danach ging es aber nicht weiter und mir sind die Ideen ausgegangen, was ich noch ausprobieren könnte. Im Admin-Backend gab es dann im Widget der eingeloggten Visu's ein lustiges Flackern so etwa im Sekundentakt. Visu da, Visu weg, Visu da, Visu weg... Sehr seltsam.

      Für mich ist die aktuelle Lösung noch nicht wirklich final, da man so nicht mehrere Container auf einem Host laufen lassen kann. Aber sie funktioniert erstmal grundsätzlich und insbesondere das Shutdown-/Reboot-Problem ist gelöst. Aus Docker-Sicht zwar etwas ungewöhnlich aber für diesen Fall sicher legitim.

      Falls Interesse besteht kann ich gern noch beschreiben, wie ich den nginx aufgesetzt hatte.
      Kind regards,
      Yves

      Kommentar


        #4
        was ist der unterschied zu pfischis version,.. die kann man ja programmmässig auch updaten?

        Kommentar


          #5
          Hi

          Zitat von uzi10 Beitrag anzeigen
          was ist der unterschied zu pfischis version,.. die kann man ja programmmässig auch updaten?
          Natürlich, das geht nach wie vor. Das Problem dabei ist aber, dass bei einem erneuten Build die ursprüngliche Version enthalten ist. Somit gibt es bei diesem Image hier folgende Unterschiede für den User:
          • Shutdown-/Restart-Problematik aus Admin-Oberfläche heraus funktioniert
          • Mountpoint für /var/edomi-backups
          • Build-Option zum setzen des root-Passwortes für ssh-Zugriff
          • Build-Option für zu verpackende Edomi-Version. Damit kann bei einem Edomi-Update problemlos lokal ein Image mit der neuesten Edomi-Version gebaut werden, ohne auf ein Update des Images auf Dockerhub warten zu müssen.
          Intern hat sich auch einiges geändert:
          • Separates Image für das Basis-System, so dass nicht bei jedem Build die zusätzlichen CentOS-Pakete heruntergeladen werden müssen
          • Struktur des Dockerfiles optimiert, so dass bei wiederholtem Build so wenig Layer wie möglich neu erzeugt werden müssen
          Auslöser für das Image waren eigentlich meine Experimente hinsichtlich Websocket und dabei hat sich schnell gezeigt, dass die Struktur und damit der Build-Verlauf suboptimal waren. Bspw. ist es nun mit dem Mountpoint möglich, einfach einen neuen Container zu starten und im Admin-UI ein Backup zu importieren, da dieses in einem Verzeichnis auf dem Host zur Verfügung steht.
          Kind regards,
          Yves

          Kommentar


            #6
            zuerst einmal DANKE!!! für deine Bemühungen und die Lösung des Problems!

            Aber ähhh, wie geht das jetzt bei der Syno?
            Ich müsste doch - wenn ich es richtig verstehe - beide Pakete installieren, oder ?
            EPIX
            ...und möge der Saft mit euch sein...
            Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

            Kommentar


              #7
              Hi

              Zitat von EPIX Beitrag anzeigen
              zuerst einmal DANKE!!! für deine Bemühungen und die Lösung des Problems!
              Freut mich zu hören. Musste auch erst eine ganze Weile draufrum denken und dann bei der Suche nach einer Lösung für etwas ganz anderes bin ich darüber dann mehr oder weniger gestolpert.


              Zitat von EPIX Beitrag anzeigen
              Aber ähhh, wie geht das jetzt bei der Syno?
              Ich müsste doch - wenn ich es richtig verstehe - beide Pakete installieren, oder ?
              Hm, das ist eine gute Frage. Zunächst mal, was meinst Du mit "beide Pakete? Es gibt nur ein Image und das musst Du installieren resp. pullen. Wenn Du Dich auf das im vorherigen Post beschriebene Basis-Image beziehst, dann nein, das hat damit nichts zu tun. Das ist lediglich für den Build von Interesse.

              Ob das allerdings so ohne weiteres auf der Synology funktioniert kann ich gar nicht sagen. Müsste ich auch erstmal ausprobieren. Wenn die Syno-Oberfläche auf einem nicht-Standardport erreichbar ist, sollte das eigentlich funktionieren. Sofern eben nicht noch irgendein anderer Dienst auf dem http-Port lauscht.
              Kind regards,
              Yves

              Kommentar


                #8
                OK, das mit den beiden Paketen habe ich falsch interpretiert...
                ich habe das Paket installiert, das Netzwerk auf "Host" gesetzt - leider wird die Anfrage 192.168.1.212 (NAS (Synology), auf welchem Docker isntalliert ist) sofort auf den http Port des NAS (5000) umgeleitet und ich komme nicht auf edomi...
                Ich vermute ich muss Edomi sagen auf welcher IP es ist - dazu müsste ich in die edomi.ini kommen...
                Nach dem Starten des Containers startet edomi im terminal so rasch, dass die Anzeige "PAUSE [EDOMI 1.52 - (c) Dr. Christian Gärtn....." erscheint..
                Zuletzt geändert von EPIX; 18.09.2017, 14:37.
                EPIX
                ...und möge der Saft mit euch sein...
                Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                Kommentar


                  #9
                  Ich würde das hier mal versuchen: http://tonylawrence.com/post/unix/sy...eeing-port-80/
                  Kind regards,
                  Yves

                  Kommentar


                    #10
                    Hallo Yves,

                    ich habe mal testweise versucht den Container nach Anleitung zu bauen, aber ich scheitere.
                    Ich mehr oder weniger Docker Laie.

                    Der Schritt "Pull Edomi-Docker repo from Github" funktioniert noch.
                    Nach
                    Code:
                     
                     sudo docker pull centos:6.8
                    fehlt allerdings der Ordner "edomi-baseimage". Demnach gehts dann nicht weiter.

                    Kommentar


                      #11
                      N'abend

                      Zitat von DerSeppel Beitrag anzeigen
                      Nach
                      Code:
                      sudo docker pull centos:6.8
                      fehlt allerdings der Ordner "edomi-baseimage". Demnach gehts dann nicht weiter.
                      Oh, da ist noch ein Fehler im Readme auf dem Develop-Branch. Ich werde es korrigieren.
                      Kind regards,
                      Yves

                      Kommentar


                        #12
                        N'abend miteinander,

                        so, das Readme-File ist angepasst und ein neuer Release (1.4) wird soeben gebaut. Funktional gibt es aber keine Änderungen.
                        Kind regards,
                        Yves

                        Kommentar


                          #13
                          Zitat von starwarsfan Beitrag anzeigen
                          N'abend miteinander,

                          so, das Readme-File ist angepasst und ein neuer Release (1.4) wird soeben gebaut. Funktional gibt es aber keine Änderungen.
                          Klappt! Danke! Sieht gut aus. Edomi unter Ubuntu, ein Traum!

                          Kommentar


                            #14
                            Hi,
                            ich hab das mal für die Synology ausprobiert. Installation soweit alles gut aber ich komme auch nicht auf die Oberfläche.
                            habe schon alles mögliche ausprobiert mit den Ports, auch das automatische Umleiten von Port 80 deaktiviert.
                            Hast du vielleicht noch ein Tip?

                            Danke!

                            Kommentar


                              #15
                              N'abend,

                              zunächst würde ich mal prüfen, wie genau der Container gestartet wurde. Was sagt denn
                              Code:
                              docker inspect <container-name>
                              auf der Konsole?
                              Kind regards,
                              Yves

                              Kommentar

                              Lädt...
                              X