Wie man WordPress lokal mit docker compose aufsetzt



This content originally appeared on DEV Community and was authored by Ruben Voß

Wieso so?

Um eine reproduzierbare Entwicklungs – Umgebung zu haben, ist es gut das Aufsetzen dieser Umgebung automatisch tun zu können. Dazu kann man docker compose benutzen. Hier zeige Ich euch ein docker-compose.yml, welches ein guter Startpunkt ist für eine reproduzierbare Entwicklungsumgebung.
Wir Benutzen hier als Stack

- wordpress:6.5.4-php8.1-apache
- mariadb:10.6.4-focal
- traefik:v3.0.3

Die docker-compose.yml können wir mit dem wordpress – Service anfangen:

services:
  wordpress:
      # Am Besten die Wordpress - Version festsetzen
    image: wordpress:6.5.4-php8.1-apache
    volumes:
      # Im wp_data Volume liegt der Wordpress - Code,
      # So kannst du ihn mit anderen Containern teilen
      - wp_data:/var/www/html
    restart: always
    environment:
      # Hier kannst du durch deine eigenen Werte ersetzen
      - WORDPRESS_DB_HOST=db
      - WORDPRESS_DB_USER=wordpress
      - WORDPRESS_DB_PASSWORD=wordpress
      - WORDPRESS_DB_NAME=wordpress
    labels:
      # Weiter unten konfigurieren wir dann traefik als Reverse Proxy
      - traefik.enable=true
      - traefik.http.routers.mywordpress.rule=Host(`localhost`)
    networks:
      # Füge dein Wordpress dem proxy Netzwerk hinzu:
      - proxy
    # Optional kannst du dir noch den richtigen Hostname geben, 
    # sonst beschwert sich Wordpress
    hostname: localhost

Als nächstes kannst du die Datenbank hinzufügen:

  db:
    # Das mariadb image unterstützt amd64 & arm64 architecture
    image: mariadb:11.4.2-noble
    command: '--default-authentication-plugin=mysql_native_password'
    volumes:
      # Deine Datenbank ist unter dem db_data Volume gespeichert
      - db_data:/var/lib/mysql
    restart: always
    environment:
      # Hier kannst du durch deine eigenen Werte ersetzen
      - MYSQL_ROOT_PASSWORD=somewordpress
      - MYSQL_DATABASE=wordpress
      - MYSQL_USER=wordpress
      - MYSQL_PASSWORD=wordpress
    expose:
      - 3306
      - 33060
    networks:
      - proxy

Jetzt müssen wir das ganze nur noch um unseren traefik Reverse – Proxy erweitern:

  traefik:
    image: traefik:v3.0.3
    ports:
      - "80:80"
      - "8080:8080"
    networks:
      - proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command:
      # Lokal reicht das http - Setup
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"

  # Mit whoami kannst du traefik debuggen
  whoami:
    image: traefik/whoami:v1.8
    networks:
      - proxy
    labels:
      - traefik.enable=true
      - traefik.http.routers.mywhoami.rule=Host(`whoami.localhost`)

networks:
  proxy:
    name: proxy

volumes:
  letsencrypt:
    name: letsencrypt
  db_data:
  wp_data:

Nun musst du nur noch docker compose up Auf deinem Terminal ausführen, und dein Wordpress wird unter localhost bei dir erreichbar sein!

Happy Coden!
Dein Ruben

Mein Blog


This content originally appeared on DEV Community and was authored by Ruben Voß