Vorbereitung

Proxmox-VM mit debian 10 (buster).
d.h. das Image debian-10.{VERSION}-amd64-xfce-CD-1.iso muss in proxmox zur Verfügung stehen (beim Erstellen dieser Doku: VERSION=4.0).
Achtung: i386 geht nicht, es muss zwingend amd64 sein!

Damit ich mich wohl fühle, installiere ich folgende Pakete nach dem ersten Neustart:

apt-get install \
 ssh attr acl ntp postfix mouspad \
 mc joe unrar arj p7zip \
 cifs-utils nfs-common

Und da ich mit bash arbeite, stelle ich den Default um

dpkg-reconfigure dash

Auszug aus der Doku

auf docker.com

alle weiteren Schritte als ROOT (z.bsp mit "su -" oder jeweils vorangestelltem "sudo")

Notwendige Pakete installieren:

apt-get install \
 apt-transport-https \
 ca-certificates \
 curl \
 gnupg-agent \
 software-properties-common

GPG-Key installieren:

curl -fsSL \
  https://download.docker.com/linux/debian/gpg \
| apt-key add -

Repository aktivieren:

add-apt-repository \
 "deb [arch=amd64] https://download.docker.com/linux/debian \
 $(lsb_release -cs) \
 stable"

Docker installieren

apt-get update
apt-get install docker-ce docker-ce-cli containerd.io

Docker-Compose installieren

curl -L \
 https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m) \
 -o /usr/bin/docker-compose

chmod +x /usr/bin/docker-compose

Nachbearbeitung

Ich gebe der VM eine zweite Netzwerk-Schnittstelle. Die erste wurde bei der Installation auf dhcp gesetzt und erhlält eine interne IP. Die neue wird auf die externe Schnittstelle gebunden und in der VM mit einer fixen IP aus meinem Range versehen.

Bei debian mit xfce werden die Interfaces durch den Network-Manager verwaltet, ausser sie werden in /etc/network/interaces definiert:

auto ens18
iface ens18 inet dhcp

auto ens19
iface ens19 inet static
    address 212.254.31.37
    netmask 255.255.255.240
    gateway 212.254.31.33

der erste Block kann auch weggelassen werden, dann wird das Interface durch den Network-Manager verwaltet - was im Standard auch dhcp ist.

oder beide fix:

auto ens18
iface ens18 inet static
    address 192.168.11.37
    netmask 255.255.255.0

auto ens19
iface ens19 inet dhcp
    address 212.254.31.37
    netmask 255.255.255.240
    gateway 212.254.31.33

Der Name der Interfaces kann abweichen sein!

Test

Zum testen nehme ich das Beispiel aus Docker & Co (neuauflage 2020) des Heise-Verlages (Seite 50, Container mit Compose einrichten), zu finden auf ct.de.

Ich erstelle ein Verzeichnis "~/docker" und lege hier das "docker-compose.yml" als "wp.yml" ab. Das entprechende wp.yml.

version: '3.7'
services:
  db:
    image: mysql:5.7
    volumes:
     - ./data/mysql:/var/lib/mysql
    restart: always
    environment:
     MYSQL_ROOT_PASSWORD: sehr_geheim
     MYSQL_DATABASE: wordpress
     MYSQL_USER: wordpress_user
     MYSQL_PASSWORD: 123wordpress
  wp:
    depends_on:
     - db
    image: wordpress:4-php7.2-apache
    volumes:
     - ./data/wp/themes:/var/www/html/wp-content/themes/
     - ./data/wp/uploads:/var/www/html/wp-content/uploads/
    ports:
     - "8001:80"
    restart: always
    environment:
     WORDPRESS_DB_HOST: db
     WORDPRESS_DB_USER: wordpress_user
     WORDPRESS_DB_PASSWORD: 123wordpress

Sinvollerweise bitte die Zugangsdaten ändern!

Mit folgenden Skript steuere ich diese WordPress-Instanz:

#! /bin/bash
OPT="-f wp.yml"
case "$1" in
 start)
  docker-compose ${OPT} up -d
  ;;
 stop)
  docker-compose ${OPT} stop
  ;;
 log)
  docker-compose ${OPT} logs
 ;;
esac

Wichtig: in der Wordpress-Konfiguration (im Firefox auf der VM erreichbar unter "localhost:8001") nach der Grund-Konfiguration in den "Settings" von "localhost" auf die externe IP umstellen, andernfalls lässt sich die Seite von aussen nicht nutzen!

Aktuell ist 5-php7.4-apache anstelle von 4-php7.2-apache. Mir ist es nicht gelungen, das system direkt damit zu starten - es fehlt dann das aktuelle Template!. Deshalb Grundinstallation nach doku, anschliessend stoppen, auf die neue version ändern und neu starten. Jetzt haben wir zu viele templates die NICHT aktuell sind. Deshalb alle ausser dem aktiven "tewntyseventeen" aus "data/wp/themes/" rauslöschen.

Test #2

Für einen zweiten Test empfehle ich das Beispiel aus Docker & Co (neuauflage 2020) des Heise-Verlages (Seite 68, HTTP-Verkehr mit Traefik routen), zu finden auf ct.de.

Bestellt werden kann das PDF oder Heft im Heise Shop