Einrichtung einer lokalen Drupal- oder WordPress-Site mit Docker
2020-09-02•4 Min Lesezeit
Dieser Artikel zielt nicht darauf ab, Erklärungen zu den Tools zu geben, die ich zur Einrichtung von Drupal/WordPress-Sites verwende. Ich denke, es gibt viele Informationen im Internet über sie Docker, Traefik, Compose. Das einzige Ziel dieses Beitrags ist es, den Prozess zu dokumentieren, den ich verfolge, da er sehr einfach ist, und zu hoffen, dass er auch anderen Menschen helfen kann.
Voraussetzungen: Bevor Sie beginnen, benötigen Sie:
- Docker installiert.
- Grundkenntnisse in Git.
- Vertrautheit mit dem Terminal.
- Ein bestehendes Repository/Codebasis von Drupal/WordPress. Wenn Sie nur eine frische Installation ausprobieren möchten, folgen Sie bitte der offiziellen Dokumentation der Vanilla-Installationen von wodby.com, diese sind einfacher als diese. Die URLs sind: Drupal oder WordPress
Die Schritte für Drupal 7/8/9:
- Erstellen Sie einen Ordner, in dem Sie die Dateien Ihres Projekts speichern möchten. Der Ordnername ist wichtig, da das Netzwerk basierend darauf erstellt wird. Wählen Sie nach Möglichkeit einen kurzen Namen, idealerweise nur ein Wort. Der Name wird auch für die URL verwendet. Für diesen Tutorial erstelle ich einen Ordner namens d8base.
- Klonen Sie das Docker4Drupal-Repository in den Ordner, den Sie in Schritt 1 erstellt haben. Sie können diesen Befehl im Terminal ausführen, um dies zu tun:
git clone [email protected]:wodby/docker4drupal.git .
- Erstellen Sie einen neuen Ordner und nennen Sie ihn web, innerhalb des Ordners, den Sie in Schritt 1 erstellt haben. In der Docker-Compose-Datei ist Nginx standardmäßig so konfiguriert, dass der web-Ordner als Server-Root verwendet wird. Wir klonen unsere Drupal-Codebasis auch in diesen Ordner.
- Entfernen Sie die Datei docker-compose.override.yml und Ihre Dateistruktur sollte wie folgt aussehen:
- Öffnen Sie die Dateien in Ihrer bevorzugten IDE und bearbeiten Sie die .env-Datei. Die Zeilen, die wir aktualisieren müssen, sind die Zeilen 7 und 8. Als Projektname sollten wir denselben verwenden, den wir für den Ordner verwendet haben, den wir in Schritt 1 erstellt haben (in meinem Fall d8base). Als Projekt-URL verwende ich den Namen des in Schritt 1 erstellten Ordners als Präfix und behalte den docker.localhost-Teil bei. Das ist nur meine Präferenz.
PROJECT_NAME=d8base
PROJECT_BASE_URL=d8base.docker.localhost
- Bearbeiten Sie die Datei docker-compose.yml und nehmen Sie die folgenden Aktualisierungen vor: *Kommentieren Sie alle Zeilen aus, die sich auf Traefik beziehen, da wir später eine globale traefik.yml-Datei erstellen werden.
*Heben Sie die Auskommentierung der Zeilen für PhpMyAdmin (pma) auf, damit wir es zum Importieren unserer Datenbank verwenden können:- Klonen Sie im web-Ordner, der als Teil von Schritt 3 erstellt wurde, das Repository Ihrer Drupal-Codebasis. Stellen Sie sicher, dass sich der Drupal-Code direkt in diesem Ordner und nicht in einem Unterordner befindet.
- Führen Sie im Terminal, im Ordner, der in Schritt 1 erstellt wurde, den folgenden Befehl aus, um die Dienste zu starten:
make up
Traefik konfigurieren
- Erstellen Sie einen neuen Ordner, ich empfehle, ihn traefik zu nennen, und erstellen Sie darin eine Datei traefik.yml. Der Inhalt der Datei sollte wie folgt aussehen:
version: '3'
services:
traefik:
image: traefik:v2.0
command: --api.insecure=true --providers.docker
networks:
- d8base
ports:
- '80:80'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
d8base:
external:
name: d8base_default
Wenn Sie weitere Projekte einrichten müssen, müssen Sie sie nur zu traefik.yml hinzufügen, ähnlich wie hier:
- Führen Sie im Terminal im traefik-Ordner den folgenden Befehl aus:
docker-compose -f traefik.yml up -d
Die Schritte für WordPress
- Der Prozess ist derselbe wie bei Drupal. Der einzige Unterschied besteht in Schritt 2, wo wir stattdessen das Docker4Wordpress klonen müssen.
WICHTIG: Stellen Sie sicher, dass diese Zeile nicht auskommentiert ist: NGINX_SERVER_ROOT: /var/www/html/web
Hinweise:
- Sie können die Datenbank von http://pma.d8base.docker.localhost/ importieren. Ersetzen Sie d8base durch den Namen des Ordners, der in Schritt 1 erstellt wurde
- Ihre Website sollte von http://d8base.docker.localhost/ erreichbar sein. Ersetzen Sie d8base durch den Namen des Ordners, der in Schritt 1 erstellt wurde
- Stellen Sie sicher, dass Port 80 Ihres Computers nicht von einer anderen Anwendung/Website verwendet wird, bevor Sie dieses Tutorial befolgen.
- Drupal: Wenn Sie Drush-, Composer- oder Drupal-Console-Befehle ausführen müssen, führen Sie den Befehl
docker exec -it d8base_php /bin/bash
aus und wechseln Sie dann mitcd web
in das Verzeichnis. Ersetzen Sie d8base durch den Namen des Ordners, der in Schritt 1 erstellt wurde - Wenn Sie die Composer-Version auf Version 1 herabstufen müssen, führen Sie Folgendes aus:
composer self-update --1
- Möglicherweise müssen Sie die Datei /etc/hosts bearbeiten und einen Eintrag wie diesen hinzufügen:
127.0.0.1 d8base.docker.localhost
- WICHTIG: Jedes Mal, wenn Docker neu gestartet wird, müssen Sie den Befehl
docker-compose -f traefik.yml up -d
im traefik-Ordner ausführen. - Drupal: Stellen Sie sicher, dass die Datenbankinformationen in Ihrer settings.php-Datei korrekt sind. Die .env-Datei enthält diese Informationen, und die Standardwerte sollten wie folgt aussehen:
$databases['default']['default'] = array (
'database' => 'drupal',
'username' => 'drupal',
'password' => 'drupal',
'prefix' => '',
'host' => 'mariadb',
'port' => '3306',
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
);