Bei dem Aufsetzen dieses WordPress-Blogs, wollte ich direkt mit Hilfe von Docker dafür sorgen, dass ich den Blog relativ leicht auf einen anderen Server (oder auf meinen lokalen PC) migrieren kann und auch in der Lage bin, den Blog auf ein Backup zurückzusetzen; wenn er beispielsweise durch fehlerhafte Plugin-Upgrades plötzlich in einen schwer zu lösenden Fehlerzustand gerät.

Praktischerweise gibt es hierfür bereits ein Dockerimage für WordPress, für welches wir uns ein Dockerfile erzeugen können, um dieses zu nutzen.

./docker/Dockerfile
FROM wordpress:latest
WORKDIR /var/www/html

Desweiteren nutzen wir eine docker-compose.yml Datei, um 2 Docker-Container zu definieren.

  • Datenbank-Container
    • nutzt Mariadb als Datenbank
    • hat 2 Docker-Volumes
      • Docker-Volume: Datenbank-Inhalte
      • Docker-Volume: Import-Endpoint um einen initialen Datenbankstand bei erstmaligen Starten des Containers vorzubereiten.
  • WordPress-Container
    • nutzt unsere Dockerfile als Basis.
    • hat 3 Docker-Volumes
      • Docker-Volume: WordPress-Plugins
      • Docker-Volume: WordPress-Themes
      • Docker-Volume: WordPress-Uploads

./docker-compose.yml
version: '3.6'

services:
  db:
    image: mariadb:10.1.41
    volumes:
      - ./database:/var/lib/mysql
      - ./database-init:/docker-entrypoint-initdb.d
    restart: always
    ports:
      - 127.0.0.1:5451:3306    
    environment:
        MYSQL_ROOT_PASSWORD: changeme
        MYSQL_DATABASE: mydb
        MYSQL_USER: mydbuser
        MYSQL_PASSWORD: changeme
  
  wordpress:
    build: ./docker
    image: wordpress-myproject
    depends_on:
      - db
    ports:
      - 127.0.0.1:5450:80
    restart: always
    environment:
        WORDPRESS_DB_HOST: db:3306
        WORDPRESS_DB_NAME: mydb
        WORDPRESS_DB_USER: mydbuser
        WORDPRESS_DB_PASSWORD: changeme
    volumes:
        - .wordpress/plugins:/var/www/html/wp-content/plugins
        - .wordpress/themes:/var/www/html/wp-content/themes
        - .wordpress/uploads:/var/www/html/wp-content/uploads

Wenn wir die Docker-Compose File nun deployen starten wir hierdurch die beiden Container. Wir sollten die Logausgaben beim Start beobachten und es kann sein, dass wir den WordPress-Container nochmal manuell neu starten müssen, nachdem der Datenbank-Container vollständig hochgefahren/initialisiert ist, da er davor evtl. noch nicht gefunden wird.

Wenn wir dann den Docker-Container über die korrekte URL im Webbrowser erstmalig aufrufen, erhalten wir die typische Prozedur für das erstmalige Aufsetzen des WordPress-Blogs angezeigt, wenn alles geklappt hat. Wir können nun hier wie üblich alle Einstellungen tätigen und uns danach über die “wp-admin” Route in den Blog erstmalig einloggen.

Das zugehörige Github-Projekt als Vorlage-Template habe ich hier bereitgestellt:

Schreibe einen Kommentar

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