Bereitstellung von MySQL mit Docker-Compose

Bereitstellung von MySQL mit Docker-Compose
MySQL ist eines der beliebtesten Datenbankverwaltungssysteme da draußen. Viele Anwendungen verwenden es für ihre Backend -Anforderungen. MySQL verfügt im Wesentlichen über zwei Komponenten. 1 ist der MySQL -Datenbankserver, der die Daten verwaltet und mit der externen Welt interagiert und Anwendungen die gewünschten Daten bereitstellt, sowie die Aktualisierung von Datensätzen, wenn neue Informationen eingehen. MySQL Client kann eine Remote -Anwendung wie PhpMyAdmin oder Ihre benutzerdefinierte Web -App oder Ihre eigene Befehlszeilen -Client von MySQL sein, die auch nur MySQL genannt wird.

Das Einrichten von MySQL Server ist oft langweilig. Sie müssen ein Benutzerkonto einrichten, Ports öffnen, Kennwörter festlegen, Datenbanken und Tabellen erstellen usw. In diesem Beitrag werde ich versuchen, einige Ihrer Miseries zu minimieren, indem ich eine einfache MySQL-Bereitstellung mit Docker-Compose erstellt.

Haftungsausschluss: In keiner Weise ist diese komponierte Datei "Produktionsbereit" komponieren. Wenn Sie eine MySQL -Datenbank in der Produktion ausführen möchten, müssen Sie die Sicherheit noch viel mehr verschärfen. Dies beinhaltet das Verriegeln des Stammkontos, das Einrichten von TLs und das Einstellen strengerer Berechtigungen in verschiedenen Datenbanken für verschiedene Datenbankbenutzer usw.

Ein einfaches Beispiel

Stellen Sie zunächst sicher, dass Docker auf Ihrer Workstation oder Server installiert ist. Erstellen Sie zuerst einen neuen Ordner auf Ihrem Docker -Host, um einen einfachen MySQL -Dienst auszuführen. Nennen Sie es MySQLCOMPONS:

$ mkdir mysqlComponpose

Erstellen Sie eine Datei Docker-Compose.YML in IT mit Ihrem bevorzugten Texteditor und schreiben Sie Folgendes:

Version: '3.1 '
Dienstleistungen:
DB:
Bild: Mysql
Befehl:-Default-Authentication-plugin = mysql_native_password
Neustart: Immer
Umfeld:
MySQL_ROOT_PASSWORD: UseadifferentPassword
Administrator:
Bild: Adminer
Neustart: Immer
Häfen:
- 8080: 8080

Führen Sie dann den folgenden Befehl aus demselben Verzeichnis aus:

$ docker -compose up -d

Dies mit der obigen Komponierungsdatei werden zwei neue Container erstellt, zunächst der Datenbankdienst und der zweite ein Administrium Container, der als Frontend für die Datenbankverwaltung fungiert.

Obwohl die Kommunikation zwischen dem Verwaltungscontainer und dem MySQL -Dienst über TCP über Port 3306 übertrifft, müssen wir keine Ports in unserer Datenbank öffnen. Dies liegt daran, dass Docker -Container in einem Brückennetzwerk auf jedem Port miteinander sprechen können (außer im Standard -Brückennetz eines Docker -Hosts). Sie können das Docker -Netzwerk mit dem Befehl Docker -Netzwerk LS auflisten, und es zeigt Ihnen, dass tatsächlich ein neues Netzwerk erstellt wurde.

Besuchen Sie http: // localhost: 8080 und melden Sie sich mit dem Passwort mit dem Passwort usadifferentPassword als Root an, und Sie erhalten eine sehr einfache Benutzeroberfläche, um mit Ihrem MySQL zu interagieren. MySQL kann so konfiguriert werden, dass sie auf verschiedene Weise authentifiziert werden. Wir haben uns jedoch dafür entschieden, nur das MySQL_Native_Password als Authentifizierungsmethode zu verwenden. Sie können das MySQL -Stammkennwort über eine Umgebungsvariable übergeben, wie in der YML -Datei selbst gezeigt.

Hinweis: Aus Gründen der Klarheit erwähnte ich wichtige Anmeldeinformationen wie das MySQL -Root -Passwort und andere Benutzerkennwörter im Klartext hier, hier. Dies ist offensichtlich ein Sicherheitsrisiko. Der richtige Weg, dies zu tun, wäre die Verwendung von Docker -Geheimnissen, aber das ist ein Thema für einen anderen Tag.

Bereitstellung von WordPress

WordPress ist vielleicht das klassische Beispiel, um die Stärken und Nuancen von Docker-Compose hervorzuheben. Wie die meisten regelmäßigen Installationen von WordPress verwendet die Docker -Variante auch MySQL für ihre Backend -Datenbank. Die Datenbank wird jedoch als anderer Container ausgeführt, in dem als Webserver (zusammen mit dem AnwendungswordPress) auf einem anderen Container ausgeführt wird.

Hier ist ein Ausschnitt aus der offiziellen Dokumentation von Docker-compose bezüglich des Setups.

Version: '3'
Dienstleistungen:
DB:
Bild: Mysql: 5.7
Bände:
- db_data:/var/lib/mysql
Neustart: Immer
Umfeld:
MySQL_ROOT_PASSWORD: Einwordpress
MySQL_Database: WordPress
MySQL_USER: WordPress
MySQL_Password: createNewPasswordpeaPleasetCopyThis
WordPress:
kommt drauf an:
- db
Bild: WordPress: Neueste
Häfen:
- "8000: 80"
Neustart: Immer
Umfeld:
WordPress_DB_HOST: DB: 3306
WordPress_DB_USER: WordPress
WordPress_DB_Password: createNewPasswordPeasePleasetCopyThis
WordPress_DB_NAME: WordPress
Bände:
db_data:

Dadurch wird eine WordPress -Website erstellt, die bei Port 8000 Ihres Docker -Hosts geöffnet ist. Sie können sehen, dass der Abschnitt der Dienste zwei darunter definierte Dienste definiert:

Erstens die MySQL -Datenbank mit einem benannten Volumen zum Speichern persistierter Daten und einigen Umgebungsvariablen zum Einrichten von MySQL -Benutzer, Datenbank und Kennwort.

Zweitens der WordPress -Container, der einen Webserver, einen PHP und einen WordPress enthält, sind alle damit installiert. Es muss mit der Datenbank sprechen (erhältlich bei DB: 3306 intern), sie wird den Port 80 intern über den Port 8000 des Docker -Hosts ausgesetzt. Es gibt auch einige Umgebungsvariablen, die definieren, wo die Datenbank (DB: 3306) zusammen mit dem Datenbanknamen, dem Benutzernamen und dem Passwort, den wir im MySQL -Dienst definiert haben.

Abschluss

Hoffentlich veranschaulichen die beiden Beispiele, wie man einen MySQL -Container konfigurieren. Die zugrunde liegende Idee ist, dass Sie Ihren Datenbanknamen und andere Konfigurationsdetails als Umgebungsvariablen übergeben. Sie können jederzeit auf die Beschreibung bei Docker Hub verweisen und dann MySQL für Ihre eigene Anwendung konfigurieren.