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
- KeePass – Passwörter über eigene Cloud synchronisieren - 17. Februar 2021
- FRITZ!Box 6660 Cable mit Vodafone Cable nutzen - 16. Februar 2021
- Jitsi Docker – Lobby aktivieren - 16. Februar 2021
7 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 🙂