Docker Traefik Beispiel Wordpress: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Mario.zimmermann (Diskussion | Beiträge)
Die Seite wurde neu angelegt: „<syntaxhighlight lang="yaml"> version: '3.7' services: wordpress: image: wordpress restart: always ports: - 8567:80 environment:…“
 
Mario.zimmermann (Diskussion | Beiträge)
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
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:
<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
version: '3.7'
services:
   wordpress:
   wordpress:
     image: wordpress
     image: wordpress
     restart: always
     restart: always
    ports:
      - 8567:80
     environment:
     environment:
       WORDPRESS_DB_HOST: "192.168.188.120"
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: word@press!
       WORDPRESS_DB_PASSWORD: word@press!
       WORDPRESS_DB_NAME: wordpress
       WORDPRESS_DB_NAME: wordpress
    depends_on:
      - db
     volumes:
     volumes:
       - ./wordpress:/var/www/html
       - ./wordpress:/var/www/html
     labels:
     labels:
       - "traefik.enable=true"
       - "traefik.enable=true"
       - "traefik.http.routers.wordpress.rule=Host(`wordpress.arevomeisvolk.de`)"
       - "traefik.http.routers.wordpress.rule=Host(`wordpress.linugs.de`)"
       - "traefik.http.services.wordpress.loadbalancer.server.port=80"
       - "traefik.http.services.wordpress.loadbalancer.server.port=80"
       - "traefik.http.routers.wordpress.entrypoints=websecure"
       - "traefik.http.routers.wordpress.entrypoints=websecure"
Zeile 25: Zeile 34:
     networks:
     networks:
       - traefik-public
       - traefik-public
      - database-net
</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.
*Schließlich fügen wir auch den Datenbankcontainer zu unserem Netzwerk hinzu, damit er mit dem Wordpress-Container kommunizieren kann.


<syntaxhighlight lang="yaml">
   db:
   db:
     image: mysql:latest
     image: mysql:latest
    ports:
    - 3306:3306
     restart: always
     restart: always
    networks:
      - database-net
     environment:
     environment:
       MYSQL_DATABASE: wordpress
       MYSQL_DATABASE: wordpress
Zeile 38: Zeile 56:
     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:
- ./wordpress:/var/www/html
  db:
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:
networks:
  traefik-public:
- database-net
    external: true
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
</syntaxhighlight>
</syntaxhighlight>

Aktuelle 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.
  • 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