Docker Traefik Beispiel Wordpress

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

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



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