Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Edomi und Websockets unter Docker

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

    Problem mit Edomi und Websockets unter Docker

    Hallo miteinander,

    nachdem ich nun schon einige Tage mit dem Websocket-Problem beim Edomi-Docker-Container kämpfe, bin ich jetzt mit meinem Latein am Ende.

    Hier die Hintergründe dazu:

    Ich habe auf Basis des Docker-Images von pfischi ein neues Image entwickelt, siehe diesen Thread. Seitdem Edomi allerdings Websockets verwendet, funktioniert die übliche Verwendung eines Docker-Containers nicht mehr. Mit üblicher Verwendung meine ich, dass die im Container verwendeten Ports bei der Initialisierung des Containers explizit angegeben werden. Das wäre dann soetwas:

    Code:
    docker run --name edomi -p 80:80 -p 8080:8080 -d ...
    ​​​​​​​
    Das funktioniert aber bei Edomi nicht, da die Websocket-Verbindung nicht zustande kommt. Die aktuell einzige Lösung ist, den Aufruf so zu machen:

    Code:
    ​​​​​docker run --name edomi --net=host -d ...
    ​​​​​​​
    Das hat aber den Nachteil, dass alle Ports vom Host direkt an den Container durchgereicht werden, womit man sich dann i.d.R. mit anderen Diensten auf dem Host oder weiteren laufenden Docker-Containern in die Quere kommt. Gerade für die Synology-User ist das aber ein KO-Kriterium.

    Ich habe nun bspw. schon versucht, direkt im Docker-Container einen nginx-Proxy vor Edomi zu stellen, welcher die Websocket-Verbindung handhabt, was dann beim Aufruf bspw. wie folgt aussah:

    Code:
    ​​docker run --name edomi -p 80:81 -p 8080:8081 -d ...
    ​​​​​​​
    Damit werden die Ports 80 bzw. 8080 vom Host an die Ports 81 bzw. 8081 im Container weitergereicht. Im Container lauscht dann der nginx auf diese Ports und reicht diese dann seinerseits an die Ports 80 bzw. 8080 von Edomi weiter. Also an die Edomi-Default-Ports. Das Admin-UI ist damit problemlos zu erreichen, nur die Visu nicht. Der rote Kreis dreht sich endlos und im Widget der aktiven Visu's flackert diese im Sekundentakt. Die Visu steht also für einen Moment in der Liste, dann ist die Liste wieder leer. Das macht also PingPong und irgendeine Art der Kommunikation findet statt.

    Als nächsten Schritt habe ich einen neuen Container basierend auf dem gleichen CentOS-Basissystem gebaut und dort drin eine simple NodeJS-Websocket-Demoapplikation installiert. Kein nginx oder dergleichen, einfach nur NodeJS und den Container dann mit Portmapping "-p 80:80 -p 8080:8080" gestartet. Auf diese Websocket-Demo lässt sich problemlos zugreifen und damit ist für meine Begriffe klar, dass das Problem nicht bei Docker liegt sondern irgendetwas mit dem Edomi-Websocket zu tun hat.

    Wie können wir dem auf die Spur kommen? Alle Ideen sind willkommen!
    Kind regards,
    Yves

    #2
    Zitat von starwarsfan Beitrag anzeigen
    Das hat aber den Nachteil, dass alle Ports vom Host direkt an den Container durchgereicht werden, womit man sich dann i.d.R. mit anderen Diensten auf dem Host oder weiteren laufenden Docker-Containern in die Quere kommt.
    Ich bin alles andere als ein Docker-Experte, aber werden in dem Fall nicht nur die Ports durchgereicht die im Container geoeffnet sind?

    Kommentar


      #3
      Zitat von starwarsfan Beitrag anzeigen
      ​​​​​Das hat aber den Nachteil, dass alle Ports vom Host direkt an den Container durchgereicht werden, womit man sich dann i.d.R. mit anderen Diensten auf dem Host oder weiteren laufenden Docker-Containern in die Quere kommt. Gerade für die Synology-User ist das aber ein KO-Kriterium.
      Bist du dir hier sicher? Ich habe auf meinem Rechner einen Plex-Server auf Port xyz (Web-Frontend) laufen und seit neuestem nun deinen Docker-Container genau mit der Einstellung von dir. Sowohl mein Plex-Server, als auch Edomi im Docker-Container funktionieren soweit ohne Probleme. Ich würde das jetzt so verstehen, dass du vermutest, dass der Host auch den Port xyz an den Docker-Container weiterleitet und daher andere Anwendungen (bei mir Plex) nicht laufen. Das ist wie gesagt bei mir nicht der Fall.

      Oder verstehe ich die Problematik gerade falsch?

      Kommentar


        #4
        Ja, verstehst Du falsch.

        Um etwas weiter auszuholen: mit der Host-Option befindet sich der Container im gleichen Netz wie der Host und dann gibt es Portkonflikte, wenn die Edomi-Ports bereits anderweitig genutzt werden.

        Normalerweise hat jeder Container sein eigenes Netz und ist darin abgeschottet. Die benötigten Ports werden dann nach draussen gemappt, womit sich die Möglichkeit ergibt, mehrere Container laufen zu lassen, deren Applikation eigentlich alle den gleichen Port verwenden.

        Bei Dir geht das, weil das Plex-Webfrontend eben weder auf Port 80 noch 8080 läuft.
        Kind regards,
        Yves

        Kommentar


          #5
          und Synology zwanghaft in der Firmware Port 80 für sich reserviert hat....
          EPIX
          ...und möge der Saft mit euch sein...
          Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

          Kommentar

          Lädt...
          X