Ankündigung

Einklappen
Keine Ankündigung bisher.

Docker-Container / Database-Plugin / Maria-DB

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

    Docker-Container / Database-Plugin / Maria-DB

    Hallo zusammen,
    ich nutze nun schon länger henfri s Docker Container für SmarthomeNG, und hatte 1.2, 1.4.2 und jetzt eben 1.5.1 im Einsatz auf meiner Synology DS415+.
    Das läuft alles super und wenn man einmal den /var/run angelegt hat funktioniert auch 1.5.1 mit den alten YAMLs ;-).
    Ich versuche nun statt sqlite maria-DB zu verwenden. Der DB Server läuft auch auf dem NAS und ich habe alles soweit vorbereitet, dass man an die DB ran kommen kann. Ich hab mir gedacht, RTFM und mach einfach ne Bash im Container auf und installier die Plugins und dann geht das schon:
    https://www.smarthomeng.de/database-...-mysql-mariadb

    Es fehlt pymysql in der Menge der Plugins für Python.
    Code:
    smarthome@smarthome-ng151:/$ pip3 install --upgrade pymysql                                                                                                                  
    Collecting pymysql                                                                                                                                                           
      Using cached https://files.pythonhosted.org/packages/a7/7d/682c4a7da195a678047c8f1c51bb7682aaedee1dca7547883c3993ca9282/PyMySQL-0.9.2-py2.py3-none-any.whl                 
    Requirement not upgraded as not directly required: cryptography in /usr/local/lib/python3.4/dist-packages (from pymysql) (2.3)                                               
    Requirement not upgraded as not directly required: idna>=2.1 in /usr/local/lib/python3.4/dist-packages (from cryptography->pymysql) (2.7)                                    
    Requirement not upgraded as not directly required: six>=1.4.1 in /usr/local/lib/python3.4/dist-packages (from cryptography->pymysql) (1.11.0)                                
    Requirement not upgraded as not directly required: asn1crypto>=0.21.0 in /usr/local/lib/python3.4/dist-packages (from cryptography->pymysql) (0.24.0)                        
    Requirement not upgraded as not directly required: cffi!=1.11.3,>=1.7 in /usr/local/lib/python3.4/dist-packages (from cryptography->pymysql) (1.11.5)                        
    Requirement not upgraded as not directly required: pycparser in /usr/local/lib/python3.4/dist-packages (from cffi!=1.11.3,>=1.7->cryptography->pymysql) (2.18)               
    Installing collected packages: pymysql                                                                                                                                       
    Could not install packages due to an EnvironmentError: [Errno 13] Keine Berechtigung: '/usr/local/lib/python3.4/dist-packages/PyMySQL-0.9.2.dist-info'                       
    Consider using the `--user` option or check the permissions.                                                                                                                 
                                                                                                                                                                                 
    You are using pip version 10.0.1, however version 18.1 is available.                                                                                                         
    You should consider upgrading via the 'pip install --upgrade pip' command.
    sudo existiert nicht in der Shell:
    Code:
    smarthome@smarthome-ng151:/$ sudo                                                                                                                                            
    bash: sudo: Kommando nicht gefunden.
    Kann mir jemand nen Tip geben, wie ich an der Front weiterkomme?

    #2
    Hallo,

    dann mach doch eine Bash direkt als root auf.
    Mit Portainer geht das ganz einfach. Auf der Kommandozeile weiß ich das jetzt nicht.

    Code:
    root@homeserver:/# pip3 install --upgrade pymysql
    Collecting pymysql
    Downloading [URL="https://files.pythonhosted.org/packages/a7/7d/682c4a7da195a678047c8f1c51bb7682aaedee1dca7547883c3993ca9282/PyMySQL-0.9.2-py2.py3-none-any.whl"]https://files.pythonhosted.org/packa...3-none-any.whl[/URL] (47kB)
    100% |████████████████████████████████| 51kB 1.3MB/s
    Requirement already satisfied, skipping upgrade: cryptography in /usr/local/lib/python3.4/dist-packages (from pymysql) (2.3.1)
    Requirement already satisfied, skipping upgrade: idna>=2.1 in /usr/local/lib/python3.4/dist-packages (from cryptography->pymysql) (2.7)
    Requirement already satisfied, skipping upgrade: cffi!=1.11.3,>=1.7 in /usr/local/lib/python3.4/dist-packages (from cryptography->pymysql)(1.11.5)
    Requirement already satisfied, skipping upgrade: six>=1.4.1 in /usr/local/lib/python3.4/dist-packages (from cryptography->pymysql) (1.11.0)
    Requirement already satisfied, skipping upgrade: asn1crypto>=0.21.0 in /usr/local/lib/python3.4/dist-packages (from cryptography->pymysql)(0.24.0)
    Requirement already satisfied, skipping upgrade: pycparser in /usr/local/lib/python3.4/dist-packages (from cffi!=1.11.3,>=1.7->cryptography->pymysql) (2.19)
    Installing collected packages: pymysql
    Successfully installed pymysql-0.9.2
    root@homeserver:/#

    Ich bin aber nicht sicher, wie lange die die Modifikation des Containers überleben wird. Richtig wäre es, das benötigte Paket im Dockerfile hinzuzufügen -gerne direkt im Github.
    Und noch besser wäre es, direkt in der requirements.txt des Plugin, welches das Paket braucht das fehlende Requirement hinzuzufügen.

    Gruß,
    Hendrik

    Kommentar


      #3
      Ich vermute es ist drum nicht in den requirements, da das database Plugin auch ohne sql läuft. Nutzt man es nur mit sqlite, brauchts das pymysl nicht.

      Kommentar


        #4
        Servus,

        da meine Linux-Kiste mit meinem aktuellen Smarthome langsam in die Jahre kommt setz ich meine Smarthome Umgebung auch gerade neu auf und bastel an meiner Docker Konfiguration, dabei bin ich genau über das selbe gestolpert.

        Im Dockerfile aus dem Repo https://github.com/smarthomeNG/docker habe ich mir die Zeile hinzugefügt:

        Code:
        RUN python3 -m pip install --upgrade pymysql

        Beim lesen ist mir dann aufgefallen das im "master" noch eine alte Version von Smarthome-NG gezogen wird, im "develop"-Branch stehts richtig.
        Ist das so gewollt, oder vielleicht einfach vergessen worden in den Release zu bringen?



        PS: (gehört aber vermutlich eher in den Docker-Thread)
        Was mir noch aufgefallen ist das ich in der plugin.yaml die IP des Docker Hosts angeben muss, sollte das nicht mit der Docker-Compose und "links" möglich sein das z.b. ein Hostname "knxd" die Route zum "knxd"-Service korrekt auflöst? (ähnlich natürlich mit "mariadb")
        Zumindest unter meinem Dev-Windows kommt da im Log aber immer 127.0.0.1 raus, weshalb der SH Container dann wohl nicht mit dem knxd sprechen kann.
        Verwende ich die IP von meinem Docker-Hosts gehts natürlich.

        Kommentar


          #5
          Danke für eure Kommentare! Das Thema war urlaubsbedingt liegengeblieben. Ouch, bash als root, da hätte man draufkommen können. Und dann habe ich Ende Oktober rumprobiert.

          Ich disqualifizier mich einfach mal als "Von der Stange Nutzer":
          Ich habe vor mehr als zehn Jahren mal Linux Administration gemacht. Komisch der Server wurde dann gehackt. Aber er hat vorher alles gemacht was ich wollte. Jetzt dachte ich: OK manpages gibt es noch, es gibt --help oder -? also wird das schon klappen. Google war schon immer ein Freund (bzw. dessen alternativen). Ich bin trotzdem stecken geblieben.

          Ich nutze auf der Synology die GUI und darin die Docker-Images direkt vom Dockerhub; Keine Kommandozeile auf dem Host. Ich wüsste nicht, wie ich den Dockerfile ändern könnte. Einzige Idee: Ich publiziere selbst auf den Hub. Ich nehme jetzt einfach mal an, dass das bei nativen Installationen von Docker anders aussieht (runterladen, ändern, nutzen).

          Das Starten einer Bash direkt als Root: bash als Kommando, klar. Aber wie krieg ich der gesagt, mach das als root (oder anderer User)? In den Portainer Screenshots konnte ich auch kein extra-Feld für den User finden, daher nehme ich an, man kann der Bash einen Parameter mitgeben. Den habe ich aber noch nicht gefunden. Und ein bash und dann darin "su root" scheitert mit der Meldung, dass das nur von einem Terminal aus geht.

          Kann mir noch jemand gegen meinen Bretterzaun vor dem Kopf helfen, oder bin ich mit meinen 32 mittlerweile zu alt für sowas?

          Kommentar


            #6
            Guck doch mal ins Handbuch:
            https://docs.docker.com/engine/refer...exec/#examples

            Ansonsten:
            Code:
            docker exec -dit -u 0 [CONTAINER-ID] /bin/bash

            Kommentar


              #7
              Danke für die Info, aber da komme ich auf der Syno nicht so ohne weiteres dran. Ja, ich weiß, SSH und root aktivieren, dann müsste auch das Docker kommando-set erreichbar sein.

              Die Bash als root Starten, hat dazu noch einer ne Idee?

              Kommentar


                #8
                Bei portainer kannst du den User wählen, wenn du ne shell aufmachst

                Kommentar


                  #9
                  So hab ich das Thema jetzt gelöst:
                  Im DSM SSH erlauben, mit meinem Syno-User per SSH angemeldet.
                  Dann
                  Code:
                  sudo docker ps
                  um die Container Id zu bekommen

                  Code:
                  sudo docker exec -it -u 0 [Container Id] python3 -m pip install --upgrade pymysql
                  der Parameter -d hätte die Session wieder detached, man hätte also keine Rückmeldung bekommen. So funktionierte die Installation.

                  Jetzt kriege ich nur keine Verbindung. :-(

                  Ich habe die Info, auf welchem Port die Datenbank lauscht, aus der Maria DB gezogen (bei mir 3007 und nicht 3006) und das entsprechend in der plugin.yaml hinterlegt. Leider bleibt die Meldung
                  Code:
                  Database: initialization failed: (2003, "Can't connect to MySQL server on '<host>' ([Errno 111] Verbindungsaufbau abgelehnt)")
                  <host> ist natürlich mein NAS-Name.

                  Blockiert hier Docker (Netzwerkeinstellung ist "Host"), also die Verbindung von SmarthomeNG ausgehend, oder Blockiert ein Eingangskanal auf dem NAS? Wie könnte ich das prüfen?

                  Ich habe auch 127.0.0.1 und localhost ausprobiert und dem Datenbank-User über phpMyAdmin auch die Berechtigung erteilt, von jedem Host angesprochen zu werden.
                  Zuletzt geändert von jentz1986; 16.12.2018, 11:17. Grund: docker ps ergänzt, brauchte das nochmal und hatte mich dann gefragt, wie ich an die ContainerID komme

                  Kommentar


                    #10

                    Zitat von jentz1986 Beitrag anzeigen
                    bei mir 3007
                    nein, es ist 3307.

                    Jetzt gehts.

                    Kommentar

                    Lädt...
                    X