PHPMyAdmin ist eine beliebte Verwaltungsschnittstelle für MySQL- und MariaDB-Datenbanken. Damit können Sie über einen Webbrowser mit Ihren Schemas, Tabellen und Daten interagieren.
Das Projekt verfügt über ein offizielles Docker-Image, das die Bereitstellung in containerisierten Umgebungen vereinfacht. So verwenden Sie das Image, um schnell eine neue PHPMyAdmin-Instanz zum Laufen zu bringen.
Grundlegende Verwendung
Die einfachste Installation lässt einen PHPMyAdmin-Container eine Verbindung zu jedem zugänglichen Datenbankserver herstellen:
docker run -d --name phpmyadmin -e PMA_ARBITRARY=1 -p 8080:80 phpmyadmin
Dieser Befehl startet PHPMyAdmin auf Port 8080. Besuchen Sie localhost:8080
in Ihrem Browser, um den Anmeldebildschirm anzuzeigen. Das Vorhandensein von PMA_ARBITRARY
Umgebungsvariable führt dazu, dass ein Serververbindungsformular angezeigt wird. Geben Sie die Host- und Benutzeranmeldeinformationen Ihrer MySQL- oder MariaDB-Datenbank an, um sich anzumelden.
Wenn Sie diese Methode verwenden, sehen Sie normalerweise eine PHPMyAdmin-Warnung, dass „einige erweiterte Funktionen deaktiviert wurden“. Dies tritt auf, wenn der Server, mit dem Sie verbunden sind, keine Datenbank namens phpmyadmin
hat . PHPMyAdmin verwendet dieses Schema, um seine eigenen Konfigurationsdaten zu speichern.
Folgen Sie dem Link der Warnung zu „Create a database“, um die Installation abzuschließen. Ihr Benutzerkonto benötigt die Berechtigung zum Erstellen neuer Datenbanken auf dem Server.
Einen Server voreinstellen
Alternativ zum Zulassen beliebiger Zugriffe können Sie den PHPMyAdmin-Container mit einer vorkonfigurierten Serververbindung starten. Geben Sie den PMA_HOST
an und PMA_PORT
Umgebungsvariablen anstelle von PMA_ARBITRARY
:
docker run -d --name phpmyadmin -e PMA_HOST=mysql.example.com -e PMA_PORT=33060 -p 8080:80 phpmyadmin
PMA_PORT
es ist optional. Es wird den MySQL-Standardwert 3306 verwenden, wenn kein Wert angegeben wird.
Das Starten des Containers mit diesen Variablen wird PHPMyAdmin darauf beschränken, mit mysql.example.com
zu arbeiten Server. Sie werden auf dem Anmeldebildschirm zur Eingabe eines Benutzernamens und Passworts aufgefordert, müssen jedoch keinen Hostnamen angeben.
PHPMyAdmin kann auch so konfiguriert werden, dass mehrere Serveroptionen angezeigt werden. Geben Sie PMA_HOSTS
an und PMA_PORTS
als durch Kommas getrennte Listen von Verbindungen, um diese Funktionalität zu aktivieren.
Einen MySQL-Docker-Container verwenden
Ein weiterer häufiger Anwendungsfall ist die Verbindung zu einem MySQL- oder MariaDB-Server, der in einem separaten Docker-Container ausgeführt wird. Sie können den Datenbankserver entweder auf einem Port verfügbar machen oder beide Container mit einem gemeinsam genutzten Docker-Netzwerk verbinden. Verwenden Sie in beiden Fällen den PMA_HOST
und PMA_PORT
Umgebungsvariablen weisen PHPMyAdmin an, wie es sich mit dem Server verbinden soll.
Ältere Docker-Links werden ebenfalls unterstützt:
docker run -d --name phpmyadmin --link my_mysql_container:db -p 8080:80 phpmyadmin
Mit diesem Befehl können Sie PHPMyAdmin mit my_mysql_container
verbinden Container ohne manuelles Einrichten von Netzwerkverbindungen. Diese Funktionalität ist in Docker jedoch veraltet, daher ist es vorzuziehen, zu den Netzwerkbefehlen zu wechseln:
docker network create phpmyadmin docker network connect phpmyadmin mysql_container_name --ip 172.17.0.1 docker network connect phpmyadmin phpmyadmin_container_name
Alternativ können Sie PHPMyAdmin mit einer vorkonfigurierten Netzwerkverbindung über Dockers --network
starten Flagge:
docker run -d --name phpmyadmin --network phpmyadmin -p 8080:80 phpmyadmin
Jetzt kann PHPMyAdmin den MySQL-Container über das freigegebene Netzwerk erreichen. Setzen Sie den PMA_HOST
Umgebungsvariable auf 172.17.0.1
wenn Sie den Container starten.
Vereinfachung der Bereitstellung mit Docker Compose
Das Schreiben einer Docker Compose-Datei vereinfacht nicht triviale Bereitstellungen. Sie können einen neuen PHPMyAdmin-Container auf wiederholbare Weise mit docker-compose up -d
aufrufen Befehl.
Hier ist eine docker-compose.yml
für PHPMyAdmin im beliebigen Verbindungsmodus:
version: "3" services: phpmyadmin: image: phpmyadmin:latest ports: - 8080:80 environment: - PMA_ARBITRARY=1 restart: unless-stopped
Docker Compose hilft Ihnen auch beim Erstellen eines Stacks mit einer neuen MySQL-Datenbankinstallation und einem PHPMyAdmin-Container:
version: "3" service: mysql: image: mysql:latest expose: - 3306 environment: - MYSQL_ROOT_PASSWORD volumes: - mysql:/var/lib/mysql restart: unless-stopped phpmyadmin: image: phpmyadmin:latest ports: - 8080:80 environment: - PMA_HOST: mysql - PMA_PASSWORD: ${MYSQL_ROOT_PASSWORD} restart: unless-stopped volumes: - mysql
Führen Sie docker-compose up -d
aus um MySQL mit einem vollständig vernetzten PHPMyAdmin-Container aufzurufen. PMA_HOST
von PHPMyAdmin Variable ist auf mysql
gesetzt , die auf den MySQL-Dienstnamen verweist. Docker Compose legt Hostnamen automatisch so fest, dass sie mit Dienstnamen übereinstimmen, sodass PHPMyAdmin über das freigegebene Netzwerk eine Verbindung zu MySQL herstellen kann.
Konfigurieren der Installation
Das PHPMyAdmin-Docker-Image unterstützt eine vom Benutzer bereitgestellte Konfigurationsdatei, die Sie über ein Docker-Volume einfügen können. Der Pfad ist /etc/phpmyadmin/config.user.inc.php
:
docker run -d --name phpmyadmin -e PMA_ARBITRARY=1 -p 8080:80 -v my-config-file.php:/etc/phpmyadmin/config.user.inc.php phpmyadmin
Sie können jede der von PHPMyAdmin unterstützten Konfigurationsvariablen hinzufügen.
Das Image unterstützt auch Umgebungsvariablen für viele allgemeine Einstellungen. Dazu gehören MEMORY_LIMIT
, UPLOAD_LIMIT
und MAX_EXECUTION_TIME
, die jeweils PHP-INI-Werten entsprechen, die möglicherweise angepasst werden müssen, wenn Sie lange laufende oder komplizierte Abfragen verwenden.
Sensible Werte wie PMA_HOST
, PMA_PASSWORD
und MYSQL_ROOT_PASSWORD
, kann mithilfe von Docker-Secrets anstelle von einfachen Umgebungsvariablen eingefügt werden. _FILE
anhängen auf den Namen der Variablen und legen Sie den Wert dann auf einen Pfad innerhalb des Containers fest, der den tatsächlichen Wert bereitstellt.
docker run -d --name phpmyadmin -e PMA_HOST_FILE=/run/secrets/pma_host -p 8080:80 phpmyadmin
Zusammenfassung
PHPMyAdmin ist eines der beliebtesten und bekanntesten MySQL-Verwaltungsprogramme. Die Bare-Metal-Installation fügt Ihrem System mehrere Abhängigkeiten hinzu, indem Apache und PHP zusammen mit dem Quellcode der App gebündelt werden.
Durch die Installation von PHPMyAdmin in Docker erhalten Sie eine isolierte Umgebung, die mit einer Handvoll Docker-CLI-Befehlen erstellt, ersetzt und gelöscht werden kann. Das offizielle Image kann eine Verbindung zu jedem MySQL-Server herstellen, auf den von Ihrem Host aus zugegriffen werden kann, einschließlich Datenbanken, die in anderen Docker-Containern ausgeführt werden.
Ausführlichere Anleitungen zum Ausführen und Verwenden von PHPMyAdmin finden Sie in der offiziellen Dokumentation. Es ist besonders wichtig, den Sicherheitsleitfaden zu lesen, damit Sie Ihre Datenbank nicht unbeabsichtigt einem Angriff von außen aussetzen. Sie sollten auch die Best Practices für Docker-Sicherheit berücksichtigen, wenn Sie PHPMyAdmin in einem Container bereitstellen, der der Außenwelt ausgesetzt ist.