Hier zeige ich euch, wie ihr mehrere Instanzen von WordPress auf eurem Server betreiben könnt. Traefik dient uns hier als Reverse Proxy und stellt später den Dienst verschlüsselt per TLS bereit.

Wer Traefik noch nicht installiert hat, findet hier eine Anleitung, wie ihr dies schnell tun könnt.

Als Grundlage meiner Anleitung dient die Anleitung zur Installation von WordPress.

1. Verzeichnisse erstellen

Zuerst erstellen wir uns die Verzeichnisse für zwei Webseiten. Dies könnt ihr natürlich für beliebig viele machen.

mkdir -p /opt/containers/seite1/{database,app}
mkdir -p /opt/containers/seite2/{database,app}

2. Docker Compose anlegen

Anschließend legen wir für beide Seiten ein Docker File an.

Bei dieser Anleitung haben wir später insgesamt 4 Container. 2 für WordPress und 2 Datenbanken.

Diese Docker Compose Datei funktioniert nur, wenn ich euch mittels meiner Anleitung hier Traefik installiert habt. Sonst heißen einige Traefik Variablen wohl anders. Diese müsst ihr dann dementsprechend bei euch anpassen.

2.1 Seite 1 anlegen

cd /opt/containers/seite1/
nano docker-compose.yml
version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: unless-stopped
    environment:
      WORDPRESS_DB_HOST: wordpress-db
      WORDPRESS_DB_USER: exampleuser    ## Hier Benutzer eingeben ##
      WORDPRESS_DB_PASSWORD: examplepass ## Hier Passwort eingeben ##
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - /opt/containers/seite1/app:/var/www/html
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.wordpress-1.entrypoints=http"
      - "traefik.http.routers.wordpress-1.rule=Host(`seite1.euredomain.de`)"  ## Hier eure Domain eingeben ##
      - "traefik.http.middlewares.wordpress-1-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.wordpress-1.middlewares=wordpress-1-https-redirect"
      - "traefik.http.routers.wordpress-1-secure.entrypoints=https"
      - "traefik.http.routers.wordpress-1-secure.rule=Host(`seite1.euredomain.de`)" ## Hier eure Domain eingeben ##
      - "traefik.http.routers.wordpress-1-secure.tls=true"
      - "traefik.http.routers.wordpress-1-secure.tls.certresolver=http"
      - "traefik.http.routers.wordpress-1-secure.service=wordpress-1"
      - "traefik.http.services.wordpress-1.loadbalancer.server.port=80"
      - "traefik.docker.network=proxy"

    networks:
      - proxy
      - default

  wordpress-db:
    image: mysql:5.7
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: exampleuser     ## Hier selben Benutzer eingeben ##
      MYSQL_PASSWORD: examplepass ## Hier selbes Passwort eingeben ##
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - /opt/containers/seite1/database:/var/lib/mysql
    networks:
      - default

networks:
  proxy:
    external: true

Notwendige Anpassungen:

  1. MySQL Passwort ändern
  2. MySQL User ändern
  3. 2x eure Domain bei Traefik anpassen (seite1.euredomain.de“)

2.2 Seite 2 anlegen

cd /opt/containers/seite2/
nano docker-compose.yml
version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: unless-stopped
    environment:
      WORDPRESS_DB_HOST: wordpress-db
      WORDPRESS_DB_USER: exampleuser    ## Hier Benutzer eingeben ##
      WORDPRESS_DB_PASSWORD: examplepass ## Hier Passwort eingeben ##
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - /opt/containers/seite2/app:/var/www/html
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.wordpress-2.entrypoints=http"
      - "traefik.http.routers.wordpress-2.rule=Host(`seite2.euredomain.de`)"  ## Hier eure Domain eingeben ##
      - "traefik.http.middlewares.wordpress-2-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.wordpress-2.middlewares=wordpress-2-https-redirect"
      - "traefik.http.routers.wordpress-2-secure.entrypoints=https"
      - "traefik.http.routers.wordpress-2-secure.rule=Host(`seite2.euredomain.de`)" ## Hier eure Domain eingeben ##
      - "traefik.http.routers.wordpress-2-secure.tls=true"
      - "traefik.http.routers.wordpress-2-secure.tls.certresolver=http"
      - "traefik.http.routers.wordpress-2-secure.service=wordpress-2"
      - "traefik.http.services.wordpress-2.loadbalancer.server.port=80"
      - "traefik.docker.network=proxy"

    networks:
      - proxy
      - default

  wordpress-db:
    image: mysql:5.7
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: exampleuser     ## Hier selben Benutzer eingeben ##
      MYSQL_PASSWORD: examplepass ## Hier selbes Passwort eingeben ##
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - /opt/containers/seite2/database:/var/lib/mysql
    networks:
      - default

networks:
  proxy:
    external: true

Notwendige Anpassungen:

  1. MySQL Passwort ändern
  2. MySQL User ändern
  3. 2x eure Domain bei Traefik anpassen (seite2.euredomain.de“)

3. WordPress Instanzen starten

WordPress startet ihr wie gewohnt mit folgendem Befehl:

docker-compose -f /opt/containers/seite1/docker-compose.yml up -d
docker-compose -f /opt/containers/seite2/docker-compose.yml up -d

Teile diesen Beitrag
Christian
Letzte Artikel von Christian (Alle anzeigen)

Categories:

7 Kommentare

  1. Hallo Christian,

    da ist noch ein kleiner Fehler in der docker-compose.yml für die zweite WordPress Instanz:

    - "traefik.http.routers.wordpress-2-secure.service=wordpress-2" und nicht beschrieben - "traefik.http.routers.wordpress-2-secure.service=wordpress-1"

    VG

  2. Servus Christian,

    wärst du so nett mir da weiterzuhelfen?

    Ich habe probiert phpmyadmin als docker-compose auszuführen und damit dann extern auf die datenbank anderer container zuzugreifen, leider ohne Erfolg.

    Wäre wirklich cool wenn du mir die paar Zeilen Code für die Docker-Compose geben könntest!

    Liebe Grüße und ein schönes Wochenende!

  3. Hallo,

    eine Sehr schöne anleitung. hat alles wunderbar geklappt.

    Ich hätte eine Frage bezüglich einer zusätzlichen subdomain aka www.
    Gibt es die möglichkeit pro Seite 2 oder mehrere Host zu setzen, so das diese auch in Traefik ringebunden und die seite umleiten? Wäre sehr net für einen lösung.

    Greets,

    Caspar

    • - "traefik.http.routers.wordpress-2.rule=Host(`website.de`,`www.website.de`)" ## Hier eure Domain eingeben ##

      - "traefik.http.routers.wordpress-2-secure.rule=Host(`website.de`,`www.website.de`)" ## Hier eure Domain eingeben ##

      Habs selbst durch ein anderes Turorial von die hin bekommen 🙂

Schreibe einen Kommentar

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