[Howto] MariaDB + phpMyAdmin im Docker-Container

  • Da ich merke, dass es wohl einige Leute gibt, die mit MariaDB, phpMyAdmin und NextCloud über Docker Probleme haben, habe ich mich mal hingesetzt und versucht ein Schritt-für-Schritt-Tutorial zu bauen. Der erste Teil beschäftigt sich mit MariaDB und phpMyAdmin über Docker. Bei beiden verwende ich die offiziellen Docker-Images. Bitte seht dieses kleine Mini-Tutorial lediglich als Leitfaden. Ich kann nicht sicherstellen, dass die Schritte auf allen Systemen identisch sind oder nicht irgendwo Probleme verursachen.


    0) Allgemein: Docker-Container auf Qnap-NAS erstellen

    • auf QTS einloggen
    • Start der Container Station
    • Wechsel auf die Seite "Container erstellen"
    • Auswahl des Images und Klick auf "Erstellen"
      ACHTUNG: 
      Ist das zu verwendende Docker-Image lokal noch nicht vorhanden, so wird auf meinem System lediglich eine fast leerer Dialog angezeigt, der die durch das Image nach außen geführten Eigenschaften nicht richtig bzw. komplett anbietet. Dabei handelt es sich in meinen Augen um ein Fehler in der Container Station/QTS. Damit der Dialog direkt beim Erstellen alle möglichen Eigenschaften des Images anbietet, empfehle ich hier ohne große Einstellungen einmal direkt auf "Erstellen" zu klicken um das gewünschte Image damit lokal zur Verfügung zu stellen. Nachdem der Container erzeugt wurde, kann dieser direkt auch wieder gelöscht und erneut auf "Erstellen" geklickt werden. Nun kann direkt Das Image bleibt somit weiter lokal zur Verfügung. Ein anderer Weg wäre, das gewünschte Image per SSH und Docker direkt auf das lokale System zu pullen. Dies ist jedoch etwas aufwendiger und für Anfänger relativ fehleranfällig.
    • Einstellen der Eigenschaften für den Container
    • Bestätigen der Einstellungen mit "Erstellen"

    (!) Bitte beachten
    Um sämtliche Einstellungen eines Images für seinen Container korrekt festlegen zu können, ist ein Blick in die dazugehörige Dokumentation immer ratsam. Die meisten Images inkl. deren Beschreibungen und Quellcodes können direkt auf dem Docker-Hub (https://hub.docker.com) vorgefunden werden.


    1) MariaDB + phpMyAdmin: MariaDB-Container auf Qnap-NAS erstellen

    • Auswahl des Images "MariaDB", Klick auf "Erstellen" und Einstellung des Container-Namens

      Im ersten Schritt ist der Container-Name (Feld 1) zu vergeben. Dieser muss lokal eindeutig sein. Im Normalfall ist hier nichts anzupassen. Der hier vergebene Name wird später für phpMyAdmin benötigt. Die restlichen allgemeinen Eigenschaften können ebenfalls beim Standard verbleiben. Nachdem alles für euch passend konfiguriert ist, genügt ein Klick auf "Erweiterte Einstellungen".
    • benötigte Umgebungsvariablen für MariaDB festlegen

      Um die Umgebungsvariablen des Docker-Containers festzulegen, müsst ihr in den erweiterten Einstellungen auf die Seite "Umgebung" wechseln. Danach seht ihr eine Liste der Variablen und deren Werte. Die dort sichtbaren Variablen werden unter dem entsprechenden Namen und mit dem festgelegten Wert an den Container übergeben. Diese stehen dann dem Container für seine Zwecke zur Verfügung. Es werden nicht immer alle konfigurierbaren Umgebungsvariablen nach außen geführt. Wichtig ist für das offizielle MariaDB-Image die Umgebungsvariable "MYSQL_ROOT_PASSWORD". Da diese Variable nicht nach außen geführt wird, muss diese per Klick auf "Hinzufügen" angelegt werden. Diese Variable legt das Root-Passwort der MariaDB-Instanz fest. Mit diesem Passwort könnt ihr euch später an der Datenbank zur Administration anmelden.
    • Datenablage der Datenbanken außerhalb des Containers festlegen

      Wird dieser Schritt übersprungen, so wird innerhalb des Containers ein extra Datenbereich angelegt, welcher sämtliche MariaDB-Datenbanken und den Zustand von MariaDB beinhaltet. Um später auch Updates der Container durchführen zu können, ohne dass unsere Datenbanken oder der Zustand verloren geht, wird über das Image ein Volume zur Verfügung gestellt. Dieses wird durch den Anbieter definiert und kann lediglich durch ein Host-Volume ersetzt werden. Das Host-Volume legen wir in diesem Schritt fest (Feld 2 + 3). In meinem Fall steht der lokale Ordner "/Public/mariadb-data" im Container für MariaDB unter "/var/lib/mysql" zur Verfügung. Da es sich um eine Art Mount-Point handelt, wirkt sich eine Änderung lokal direkt im Container und andersherum aus.
    • Erstellen des Containers
      Nach Klick auf "Erstellen" hat unser NAS einiges zu tun. Nach einem kleinen :cup: sollte MariaDB mittels Docker laufen. Prüfen könnt ihr dies, indem ihr euch die Konsolenausgabe (unterer Teil in der Container Station - einfach den entsprechenden Docker-Container mit dem richtigen Namen anklicken) anschaut und auf Fehler prüft. Wenn ihr nun den verknüpften Daten-Ordner für den MariaDB-Container auf eurem NAS kontrolliert, so sollten dort schon einige Dateien zu finden sein. Diese wurde vom Container angelegt und spiegeln die Standarddatenbank "mysql" und den Zustand deren wider.

    2) MariaDB + phpMyAdmin: phpMyAdmin-Container auf Qnap-NAS erstellen und mit MariaDB verbinden

    • Auswahl des Images "phpMyAdmin", Klick auf "Erstellen" und Einstellung des Container-Namens

      Im ersten Schritt ist wieder der Container-Name (Feld 1) zu vergeben. Es gelten dieselben Richtlinien (wie Eindeutigkeit), wie bei MariaDB. Nachdem alles für euch passend konfiguriert ist, genügt wieder ein Klick auf "Erweiterte Einstellungen".
    • MariaDB und phpMyAdmin miteinander vebinden, damit eine gesicherte Kommunikation zwischen diesen Containern erfolgen kann

      Nachdem in die erweiterten Einstellungen gewechselt wurde, befindet man sich, wie auch schon im vorherigen Fall, auf der Seite "Link". Über diese Seite können Docker-Container miteinander verbunden werden. Um eine Verbindung herzustellen reicht ein Klick auf "Hinzufügen" und die richtige Konfiguration der entsprechenden Werte. In der Combobox in der Spalte "Link" ist in unserem Falle der Name des Docker-Container von MariaDB (der im vorherigen großen Schritt erzeugt wurde) auszuwählen. Als Alias ist laut Dokumentation von phpMyadmin die Bezeichnung "db" zu wählen. Damit steht später MariaDB über den Hostname "db" dem phpMyAdmin-Container zu Verfügung. Ist dies getan, so konfigurieren wir nun im letzten Schritt noch unser Netzwerk mit einem Klick auf "Netzwerk".
    • Konfiguration des Ports, um auf den Webserver in unserem phpMyAdmin-Container über den Host zugreifen zu können

      Dieser Schritt wird nicht unbedingt benötigt, ist jedoch dann wichtig, wenn ich die phpMyAdmin-Instanz direkt über die Adresse des NAS erreichen möchte. Im Normalfall wählt Docker beim Start des Containers einen zufälligen Port für jeden Port, der durch den Container nach außen gegeben werden soll. In unserem Fall verwendet der phpMyAdmin-Container den Standardport 80 für eine unsichere Verbindung (Standardport für Standard HTTP-Anwendungen) zum Webserver. Um über den Host auf den Webserver des Containers zugreifen zu können, kann jedoch nicht in jedem Fall direkt der Port 80 verwendet werden, da Docker ja nicht weiß, ob dieser Port bereits durch den Host belegt ist. Daher wird wird bei Nichtkonfiguration ein zufälliger, freier Port verwendet. Dieser kann hier auf einen festen Port gelegt werden. In meinem Beispiel der Port 9080. Ist mein NAS über den Namen "testnas" erreichbar, so ist die phpMyAdmin-instanz des Containers über http://testnas:9080 erreichbar.
      Nachdem hier alles entsprechend konfiguriert wurde, kann der phpMyAdmin-Container per "Erstellen" erstellt werden.

    3) MariaDB + phpMyAdmin: phpMyAdmin im Browser verwenden

    • Browser starten und Über Namen des "http://<Namen oder IP des NAS>:<Port>" phpMyAdmin aufrufen

      Wenn alles korrekt konfiguriert wurde, solltet ihr nun die Login-Seite von phpMyAdmin sehen. Als Benutzname "root" und als Passwort das beim MariaDB-Container erstellen angegebene Passwort verwenden.
    • Danach solltet ihr auf der Admin-Seite zur Konfiguration eurer MariaDB-Datenbank landen


    Das war's dann erstmal von mir. Ich hoffe, ihr könnt/konntet mit der kleinen :handbuch: etwas anfangen.
    Und nun viel Spaß beim Nachmachen ... :qnap:


    Ciao
    ariaci

  • Ich bekomme den Fehler:

    Code
    1. mysqli_real_connect(): (HY000/1045): Access denied for user 'root'@'10.0.3.3' (using password: YES)

    wenn ich mich einloggen will.


    Kann mir da jemand helfen?