Docker Traefik Beispiel Wordpress: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 36: | Zeile 36: | ||
- database-net | - database-net | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | Gerne! Hier ist eine überarbeitete Version des Textes mit einer Erklärung für das MySQL-Image: | ||
| + | ==MySQL-Image== | ||
| − | + | Das MySQL-Image wird verwendet, um eine Datenbank für Wordpress bereitzustellen. | |
| + | Wir setzen den Namen der Datenbank, den Benutzernamen und das Passwort als Umgebungsvariablen. | ||
| + | Durch das Mounten eines Verzeichnisses für die Datenbankdateien können wir die Datenbank zwischen Container-Neustarts persistieren. | ||
| + | Schließlich fügen wir auch den Datenbankcontainer zu unserem Netzwerk hinzu, damit er mit dem Wordpress-Container kommunizieren kann. | ||
<syntaxhighlight lang="yaml"> | <syntaxhighlight lang="yaml"> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
db: | db: | ||
image: mysql:latest | image: mysql:latest | ||
| Zeile 80: | Zeile 58: | ||
volumes: | volumes: | ||
- ./db:/var/lib/mysql | - ./db:/var/lib/mysql | ||
| + | </syntaxhighlight> | ||
| + | Hier ist die gesamte Docker-Compose-Datei mit den Abschnitten für das Wordpress- und MySQL-Image: | ||
| + | <syntaxhighlight lang="yaml"> | ||
| + | version: '3.7' | ||
| + | |||
| + | services: | ||
| + | |||
| + | wordpress: | ||
| + | image: wordpress | ||
| + | restart: always | ||
| + | environment: | ||
| + | WORDPRESS_DB_HOST: db:3306 | ||
| + | WORDPRESS_DB_USER: wordpress | ||
| + | WORDPRESS_DB_PASSWORD: word@press! | ||
| + | WORDPRESS_DB_NAME: wordpress | ||
| + | depends_on: | ||
| + | - db | ||
volumes: | volumes: | ||
| − | + | - ./wordpress:/var/www/html | |
| − | + | labels: | |
| + | - "traefik.enable=true" | ||
| + | - "traefik.http.routers.wordpress.rule=Host(wordpress.linugs.de)" | ||
| + | - "traefik.http.services.wordpress.loadbalancer.server.port=80" | ||
| + | - "traefik.http.routers.wordpress.entrypoints=websecure" | ||
| + | - "traefik.http.routers.wordpress.tls=true" | ||
| + | - "traefik.http.routers.wordpress.tls.certresolver=letsencrypt" | ||
| + | networks: | ||
| + | - traefik-public | ||
| + | - database-net | ||
| + | |||
| + | db: | ||
| + | image: mysql:latest | ||
| + | restart: always | ||
| + | networks: | ||
| + | - database-net | ||
| + | environment: | ||
| + | MYSQL_DATABASE: wordpress | ||
| + | MYSQL_USER: wordpress | ||
| + | MYSQL_PASSWORD: word@press! | ||
| + | MYSQL_RANDOM_ROOT_PASSWORD: '1' | ||
| + | volumes: | ||
| + | - ./db:/var/lib/mysql | ||
| + | |||
| + | volumes: | ||
| + | wordpress: | ||
| + | db: | ||
networks: | networks: | ||
| − | + | traefik-public: | |
| − | + | external: true | |
| − | + | database-net: | |
| − | + | external: false | |
</syntaxhighlight> | </syntaxhighlight> | ||
Version vom 20. Februar 2023, 08:27 Uhr
Erklärung:
- Wir möchten unsere WordPress-Seite mithilfe von Traefik für die Öffentlichkeit zugänglich machen.
- Die Website soll über die URL "https://wordpress.linugs.de" erreichbar sein.
- Dazu erstellen wir eine Docker-Compose-Datei mit zwei Images:
- Ein Abschnitt mit dem neuesten offiziellen WordPress-Image.
- Ein Abschnitt mit dem neuesten offiziellen MySQL-Image.
Wordpress-Image
- Wir tragen die Verbindungsdaten der MySQL-Datenbank als Umgebungsvariablen ein.
- Wir mounten die WordPress-Dateien nach außen in ein relatives Verzeichnis mit dem Namen "wordpress".
- Dann fügen wir die notwendigen Labels hinzu, um den Port des WordPress-Containers und die Domain zu konfigurieren, unter der wir die Seite erreichen wollen.
- Um sicherzustellen, dass dieser Container mit Traefik und der Datenbank kommunizieren kann, fügen wir die beiden notwendigen Netzwerke hinzu.
- Hier ist der entsprechende Abschnitt der Docker-Compose-Datei:
wordpress:
image: wordpress
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: word@press!
WORDPRESS_DB_NAME: wordpress
depends_on:
- db
volumes:
- ./wordpress:/var/www/html
labels:
- "traefik.enable=true"
- "traefik.http.routers.wordpress.rule=Host(`wordpress.linugs.de`)"
- "traefik.http.services.wordpress.loadbalancer.server.port=80"
- "traefik.http.routers.wordpress.entrypoints=websecure"
- "traefik.http.routers.wordpress.tls=true"
- "traefik.http.routers.wordpress.tls.certresolver=letsencrypt"
networks:
- traefik-public
- database-net
Gerne! Hier ist eine überarbeitete Version des Textes mit einer Erklärung für das MySQL-Image:
MySQL-Image
Das MySQL-Image wird verwendet, um eine Datenbank für Wordpress bereitzustellen. Wir setzen den Namen der Datenbank, den Benutzernamen und das Passwort als Umgebungsvariablen. Durch das Mounten eines Verzeichnisses für die Datenbankdateien können wir die Datenbank zwischen Container-Neustarts persistieren. Schließlich fügen wir auch den Datenbankcontainer zu unserem Netzwerk hinzu, damit er mit dem Wordpress-Container kommunizieren kann.
db:
image: mysql:latest
restart: always
networks:
- database-net
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: word@press!
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- ./db:/var/lib/mysql
Hier ist die gesamte Docker-Compose-Datei mit den Abschnitten für das Wordpress- und MySQL-Image:
version: '3.7'
services:
wordpress:
image: wordpress
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: word@press!
WORDPRESS_DB_NAME: wordpress
depends_on:
- db
volumes:
- ./wordpress:/var/www/html
labels:
- "traefik.enable=true"
- "traefik.http.routers.wordpress.rule=Host(wordpress.linugs.de)"
- "traefik.http.services.wordpress.loadbalancer.server.port=80"
- "traefik.http.routers.wordpress.entrypoints=websecure"
- "traefik.http.routers.wordpress.tls=true"
- "traefik.http.routers.wordpress.tls.certresolver=letsencrypt"
networks:
- traefik-public
- database-net
db:
image: mysql:latest
restart: always
networks:
- database-net
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: word@press!
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- ./db:/var/lib/mysql
volumes:
wordpress:
db:
networks:
traefik-public:
external: true
database-net:
external: false