
Beginnen Sie Ihr Abenteuer mit Docker-Console
Diejenigen, die unserem Blog folgen, wissen bereits, dass wir bei Droptica Docker verwenden. Docker ist großartig, wenn man mit Drupal entwickelt, da es ermöglicht, Umgebungen schnell und einfach zwischen Entwicklern zu propagieren.
Wir haben Ihnen auch bereits gezeigt, wie einfach es ist, ein Projekt mit unserer Docker-Drupal-Anwendung zu starten.
Ein weiterer Schritt auf dem Weg zur effizienten Nutzung von Docker ist die Anwendung docker-console. Diese ist eine neuere Version von docker-drupal und wurde, genau wie ihr Vorgänger, entwickelt, um die Erstellung einer Arbeitsumgebung für Drupal einfach und effizienter zu gestalten. Wie funktioniert das alles? Das werden Sie in diesem Artikel erfahren. Da wir alle auf Linux (hauptsächlich auf Ubuntu) arbeiten, wurden alle in diesem Artikel gezeigten Befehle auf Ubuntu ausgeführt.
Docker installieren
Natürlich beginnt unser Abenteuer mit der Installation von Docker. Sie können darüber in einem unserer früheren Artikel lesen. Zur Klarstellung: Um Docker zu installieren, müssen Sie die folgenden Befehle ausführen:
wget -qO- https://get.docker.com/ | sh
sudo usermod -aG docker $(whoami)
sudo apt-get -y install python-pip
sudo pip install docker-compose
docker-console installieren
Ein weiterer Schritt ist die Installation der docker-console-Anwendung. Dafür sollten Sie zunächst das python-pip-Paket installieren, das eine schnelle Installation und Aktualisierung unserer Anwendung ermöglicht:
sudo apt-get update && sudo apt-get -y install python-yaml python-setuptools python-pip python-dev build-essential
Nun müssen Sie nur noch docker-console installieren, was mit dem folgenden Befehl erledigt werden kann:
sudo pip install docker-console
Nach der Installation steht Ihnen im Terminal ein neuer Befehl zur Verfügung – docker-console (oder kurz dcon). Nach dem Start sollten Sie eine Liste der verfügbaren Optionen und Aktionen erhalten:
Initialisierung eines neuen Projekts
Jetzt können wir endlich unser Abenteuer mit docker-console beginnen. Zunächst nehmen wir an, dass wir kein verfügbares Drupal-Projekt haben und ein neues starten müssen. Dies ist mit dem folgenden Befehl möglich:
docker-console init --tpl drupal7
Nach dem Ausführen sollte es eine vollständige Projektstruktur für uns generieren (wie auf dem obigen Bild), die es uns ermöglicht, ein Projekt schnell und effizient zu organisieren. Der Befehl wird zur Generierung einer Drupal 7-Projektstruktur verwendet, aber es steht Ihnen nichts im Wege, mit einem Befehl stattdessen eine Drupal 8-Projektstruktur zu generieren:
docker-console init --tpl drupal8
Für diesen Leitfaden bleibe ich jedoch bei einem Drupal 7-Projekt. Der nächste Schritt besteht darin, eine geeignete Version von Drupal von https://www.drupal.org/project/drupal herunterzuladen und das Archiv im „app“-Ordner zu entpacken.
Container starten
Um mit dem Projekt arbeiten zu können, müssen Sie auch die Container mit den für die Webseite notwendigen Diensten starten (z. B. Apache, MySQL, PHPMyAdmin, Nginx – in einer traditionellen Arbeitsumgebung müssten Sie diese lokal auf Ihrem Rechner installieren). Alle Dienste, die wir für die Arbeit benötigen, sollten in der docker-compose.XML-Datei hinzugefügt und konfiguriert werden (die Datei für dieses Projekt wird unten dargestellt und kann im Hauptordner des Projekts gefunden werden). Wir erstellen unsere docker-compose-Dateien basierend auf Version 1. Wenn Sie mehr darüber erfahren möchten, wie sie erstellt wird, sollten Sie die Website des Projekts besuchen: https://docs.docker.com/compose/compose-file/compose-file-v1/
Die Konfiguration, die Sie unten sehen, wird drei Container starten:
- web: Apache und PHP,
- MySQL,
- PHPMyAdmin.
Um die Container zu starten, führen Sie den folgenden Befehl aus:
dcon up
Nach einem Moment (ein längerer Moment beim ersten Start, da alle Images zuerst heruntergeladen werden müssen) sollten Sie ein Ergebnis sehen, das dem ähnelt:
Die Website ist nun aufgebaut, Sie können zur IP-Adresse des Containers gehen und einen Blick darauf werfen. Sie können die IP-Adresse überprüfen, indem Sie „docker inspect“ ausführen.
docker inspect --format "{{ .NetworkSettings.IPAddress }}" dockerconsoleprojectexample_web_1
Bei mir war die Adresse http://172.17.0.23/ (sie kann unterschiedlich sein, je nachdem, welche Container Sie starten).
Drupal installieren
Bevor wir mit der Drupal-Installation beginnen, sollten wir zuerst den Befehl ausführen:
dcon set-permissions
Dieser Befehl setzt die richtigen Berechtigungen für Dateien und Verzeichnisse im Projekt. So vermeiden wir Fehler während der Installation.
Wenn Sie diese Adresse, die von „docker inspect“ zurückgegeben wird, öffnen, sollten Sie den Drupal-Installationsbildschirm sehen. Er ist in keiner Weise anders als ein Standardbildschirm, daher werde ich keine Schritt-für-Schritt-Anleitung schreiben. Es ist jedoch sehr wichtig, die Daten aus Ihrer docker-compose.yml-Datei zu verwenden, wenn Sie aufgefordert werden, Ihre Datenbank zu konfigurieren, genau wie in den untenstehenden Abbildungen gezeigt. Der Datenbankname sollte mit dem MYSQL_DATABASE-Parameter übereinstimmen, das gleiche gilt für die Benutzerdetails (der Benutzername kann in MYSQL_USER festgelegt werden, mit einem Passwort, das in MYSQL_PASSWORD angegeben ist, Sie können sich auch entscheiden, root zu verwenden, das Passwort für root ist in MYSQL_ROOT_PASSWORD festgelegt), Sie müssen auch den Namen unseres Datenbank-Containers als Host eingeben, ansonsten werden Sie nicht in der Lage sein, sich mit ihm zu verbinden.
Website gestartet
Jetzt, da Ihre Website fertig ist und unter der IP-Adresse des Containers erreichbar ist, können Sie Änderungen vornehmen und Inhalte hinzufügen. Sie sollten jedoch bedenken, dass alles in Docker-Containern geschieht. Entfernen Sie sie, wird alles – einschließlich der Datenbank – verloren gehen. Dies gilt nicht für die Anwendungsdateien, da sie nur aus einem lokalen Ordner in den App-Ordner eines Containers gemappt werden. Wenn Sie Ihre Datenbank sichern und verhindern möchten, dass sie verloren geht, selbst wenn Sie die Container entfernen, sollten Sie Ihre Datenbankdateien auch in einen lokalen Ordner mappen. Dadurch ermöglichen Sie ihnen die Synchronisation mit einem Ordner im Container. Was noch wichtiger ist: Die Datenbank wird nicht gelöscht, wenn die Container nur gestoppt werden, zum Beispiel wenn Sie Ihren Computer ausschalten. In diesem Fall können Sie sie durch erneutes Ausführen von „dcon up“ schnell wieder starten. In einem anderen Beispiel werden wir die Datenbank dumpen, die wir später verwenden können, um ein weiteres Projekt aufzubauen.
Ein Projekt wiederaufbauen
Das Erste, was Sie tun sollten, ist das Dumpen Ihrer Datenbank und Dateien. Dazu habe ich das Backup-and-Migrate-Modul ( https://www.drupal.org/project/backup_migrate) verwendet, aber Sie können es auf jede Weise tun, die Sie möchten. Es ist jedoch wichtig, dass die Dateien und die Datenbank als tar.gz-Archive namens database.sql.tar.gz und files.tar.gz enden. Danach platzieren Sie die Datenbankdatei im app_databases-Ordner und verschieben die komprimierten Dateien nach app_files.
Wenn Sie den PHPMyAdmin-Container betreten möchten, um die Datenbank zu dumpen, können Sie dies natürlich genauso leicht tun, indem Sie zur IP-Adresse des PHPMyAdmin-Containers in Ihrem Browser gehen und sich mit den Daten aus der oben gezeigten docker-compose.yml-Datei anmelden.
Um das Datenbank-Dumping durchzuführen, können Sie auch den Befehl verwenden:
dcon dump
Dieser Befehl erstellt ein Datenbankdump, komprimiert es sofort in das tar.gz-Format und legt es im app_databases-Verzeichnis ab. app_databases ist der Standardort, der in DUMP_EXPORT_LOCATION in der DB-Variable, in der dc_settings.py-Datei festgelegt ist und bei Bedarf geändert werden kann.
Ein auf diese Weise erstelltes Dump-File ist zur Import bereit, nur die Berechtigungen müssen angepasst und auch der Name in database.sql.tar.gz geändert werden.
Wenn Sie nicht alle vorherigen Schritte durchgegangen sind, können Sie mein Projekt, die Datenbank und die Dateien herunterladen. So können Sie Ihr Abenteuer mit docker-console ohne eigenes Projekt nach der Installation von docker, docker-compose und docker-console beginnen.
Projekt-Repository: https://github.com/DropticaExamples/docker-console-project-example
Datenbank-Dump: https://www.dropbox.com/s/tcfkgpg2ume17r3/database.sql.tar.gz?dl=0
Projektdateien: https://www.dropbox.com/s/hl506wciwj60fds/files.tar.gz?dl=0
Um mein Projekt zu klonen und die Dienst-Container zu starten, müssen Sie die folgenden Befehle in Ihrem Terminal ausführen:
cd
git clone https://github.com/DropticaExamples/docker-console-project-example
cd docker-console-project-example
git checkout docker-console-start
cd app_databases wget https://www.dropbox.com/s/tcfkgpg2ume17r3/database.sql.tar.gz?dl=0
cd ../app_files wget https://www.dropbox.com/s/tnl0ftfluyr5j7p/files.tar.gz?dl=0
cd ..
dcon up
Andernfalls, wenn Sie ein zuvor erstelltes Projekt verwenden, müssen Sie nur:
dcon up
Es sei denn, Sie hatten die Container bereits gestartet, in diesem Fall müssen Sie sie nicht erneut starten (wenn Sie „dcon up“ ausführen und Ihre Container bereits gestartet und aktuell sind, wird nur angezeigt, dass sie laufen und aktuell sind.)
Wenn Sie sich nicht sicher sind, ob Ihre Docker-Container erstellt und aktiv sind, können Sie dies überprüfen, indem Sie verwenden:
docker ps -a
Wenn alles gut gelaufen ist, sollten Sie drei aktive Container haben:
- web: Apache und PHP,
- MySQL,
- PHPMyAdmin.
Ein Projekt aufbauen
In diesem Schritt werden wir unsere Arbeitsumgebung auf Grundlage der Dateien und der Datenbank wiederherstellen, die bereits in die entsprechenden Ordner gelegt wurden. Auf diese Weise können wir kontinuierlich in einer produktionsnahen Umgebung arbeiten. Jetzt können wir eine Website auf den Arbeitscontainern aufbauen. Um dies zu tun, führen Sie den folgenden Befehl aus:
dcon build
In den vorherigen Beispielen haben wir dies nicht getan, da kein Bedarf bestand, eine Aufbau-Sequenz zu starten – es gibt keine Dateien und die Datenbank ist leer, wenn Sie ein neues Projekt starten). In diesem Beispiel umfasst der Aufbauprozess die folgenden Schritte:
- Bestätigung, dass der Aufbauprozess gestartet werden soll;
- Kopieren von Einstellungen;
- Reinigung der Datenbank;
- Import der Datenbank;
- Entpacken der Dateien;
- Reinigung des Caches (drush cc all);
- Generierung eines Login-Links (drush uli);
- Ändern der Dateiberechtigungen.
Deshalb müssen wir, wenn wir eine Datenbank und Dateien in ein Projekt importieren möchten, dcon build ausführen.
Website ist bereit
Die Website ist nun aufgebaut, und Sie können sie wie zuvor betrachten, indem Sie zur IP-Adresse des Containers gehen.
Zusammenfassung
So können Sie schnell ein Projekt basierend auf Docker und docker-console einrichten. Bei Ihrem ersten Versuch mag das Verfahren ziemlich kompliziert erscheinen, aber ich versichere Ihnen, dass Sie schnell den Nutzen der investierten Zeit in das Erlernen von Docker sehen werden, besonders wenn Sie schnell einen neuen Dienst zu einem bestehenden Projekt hinzufügen oder andere Konfigurationen testen möchten. Natürlich ist dieser Beitrag nicht vollständig erschöpfend, und wenn die Zeit es erlaubt, werden wir mehr über docker-console schreiben.
In der Zwischenzeit ermutige ich jeden, die README-Datei des Projekts bei https://github.com/droptica/docker-console zu lesen und zu versuchen, Ihr eigenes Projekt mit Drupal 8 aufzusetzen. Lassen Sie uns wissen, wie es gelaufen ist :)
Wir werden in Kürze auch die Videos vom DrupalCamp Wrocław 2017 mit Ihnen teilen, in denen Maciej Łukiański über docker-console und andere Themen spricht.