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.
Inhaltsverzeichnis
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:
- MySQL Passwort ändern
- MySQL User ändern
- 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:
- MySQL Passwort ändern
- MySQL User ändern
- 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
9 Kommentare
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
Danke. Habs korrigiert.
LG
Christian
Hey Christian,
könnte man hier noch phpmyadmin mit als Container einbauen?
LG
Hallo Omar,
ja das kann man.
Sind nur ein paar Zeilen Code in der Docker Compose.
LG
Christian
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!
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 🙂
Das startet aber 2x jeweils die Anwendung WP, Traeffik und MySQL!
Mir schwebt eher vor WP per Compose 2x zu starten (jeweils für Seite1 und Seite2), aber Traeffik und MySQL nur 1x per extra compose Datei zu starten und die WP-Seiten mit den vorhandenen Traeffik und MySQL zu verbinden.
Gibt es dafür auch eine Lösung bzw. wie sehe diese genau aus?
Habe das ganze jetzt getestet – Traeffik habe ich mal außen vor gelassen – und es ist wie ich schon sagte, es startet 2x WP aber eben auch 2x die DB.
Hast du eine Lösung für mein Problem vom 08.10.21 oder weißt du selber nicht wirklich wie man das umsetzt?