HINWEIS vom 18.02.23: Es gibt einen noch einfacheren, eleganteren Ansatz! Schau mal unter ddev / WordPress: ddev.readthedocs.io/en/latest/users/quickstart/#wordpress (Darüber mache ich eventuell auch noch ein Video …). Das Schöne beim ddev-Ansatz: die Konfiguration ist deutlich einfacher, weil in der Grundversion schon phpmyadmin und wp-cli dabei ist. Und auch der Einsatz von wp-cli ist bei ddev einfacher.

Nachdem ich über die Jahre für lokale WordPress-Entwicklungsumgebungen MAMP, VVV, Local und DevKinsta genutzt habe, habe ich mich mal wieder mit Docker beschäftigt. Zunächst einmal: alle Tools (mit Ausnahme von VVV) sind zuverlässige, empfehlenswerte Tools.

Warum also habe ich mich mal wieder mit Docker beschäftigt? Weil ich an verschiedenen Rechnern – nämlich im Büro und im Homeoffice bzw. von unterwegs – arbeite, habe ich nach einer Lösung gesucht, die sich einfach auf verschiedenen Rechnern einsetzen lässt. Und genau in dieser Hinsicht punktet Docker! Das liegt daran, dass die Konfiguration von WordPress-Entwicklungsumgebungen in kleinen Textdateien, den docker-composte.yml-Dateien hinterlegt werden. Und diese Dateien können eben sehr einfach von Rechner zu Rechner weiter gegeben werden (natürlich auch über github oder bitbucket, aber das soll hier nicht Thema sein). Wie auch immer: nach einer Woche Recherche und ausprobieren, habe ich eine Konfiguration zusammen gehabt, die genau das leistet, was ich momentan benötige:

  • WordPress
  • Adminer zur Datenbankverwaltung bzw. zur schnellen Kontrolle (ich könnte auch genauso gut PHPMyAdmin einsetzen, das ist absolut nicht entscheidend)
  • wp-cli

Ach ja, die Umgebung sollte auch mulitsitefähig sein.

Da Docker kein Tool ist, das über ein Userinterface zu bedienen ist, solltest Du entweder über ein wenig Erfahrung mit der Kommandozeile haben oder zumindest diesem Tool gegenüber aufgeschlossen sein. Voraussetzung ist neben dem Gratis-Tool Docker Desktop (docker.com/products/docker-desktop) ein Codeeditor – wie etwa das derzeit sehr angesagte Visual Studio Code (visualstudio.com). Das Schöne an VSCode: es ist ein Terminal eingebaut, mit dem Du direkt die paar wenigen Codeschnipsel eingeben kannst, um die Docker-Container zu starten und zu beenden.

Hier in aller Kürze die Befehle, mit denen Du – nachdem Docker läuft – die nötigen Container startest bzw. beendest. Beide Befehle werde quasi aus dem Verzeichnis aufgerufen, in dem die docker-compose.yml-Datei liegt.

  1. Docker-Container starten: docker compose up -d
  2. Docker-Container beenden: docker compose down

Und um wp-cli mit WordPress innerhalb Deines Docker-Containers zu benutzen, starten wir erst eine Bash-Shell: docker run --rm wpcli bash. Anschließend bist Du auf dem Webserver – innerhalb des entsprechenden Docker-Containers – und kannst wp-cli-Befehle (developer.wordpress.org/cli/commands) wie gewohnt eingeben. Z.B. wp plugin list etc.

Und hier nun meine docker-compose.yml-Datei, die ich im Videotutorial genauer erkläre:

version: '3.9'

services:

  wordpress:
    depends_on:
      - db
    image: wordpress
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - ./wp:/var/www/html/

  db:
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql

  wpcli:
    image: wordpress:cli
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - ./wp:/var/www/html/
    depends_on:
      - db
      - wordpress
    
  adminer:
    image: adminer
    ports:
      - 8081:8080

volumes:
  db:

Die Vorlage hierzu findest Du unter: hub.docker.com/_/wordpress

Viel Erfolg beim Einsatz von Docker wünscht Dir
Karsten

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert