Errata und Updates zu »Docker« (3. Auflage)

Diese Seite enthält Updates und Errata zum Buch »Docker« (3. Auflage 2021).

S. 69, Kasten »Volumes versus Mounts«

Volumes werden als bind-Mounts realisiert. Der Typ des Mounts im Kommando am Ende des Kastens muss also bind lauten, nicht volume:

--mount type=bind,source=,destination=
S. 73 phpMyAdmin-Login

Der erste Absatz auf S. 73 enthält fehlerhaften Text. Der Login in phpMyAdmin erfolgt — den Angaben auf S. 72 folgend — mit wpuser und geheim. Ein root-Login ist unmöglich, weil das root-Passwort nicht bekannt ist.

Sollten Sie in phpMyAdmin einen root-Login wünschen, müssen Sie beim Erzeugen des MariaDB-Containers (Kommando S. 72) das gewünschte root-Passwort explizit festlegen. Dazu übergeben Sie statt

-e MYSQL_RANDOM_ROOT_PASSWORD=1

die Option:

-e MYSQL_ROOT_PASSWORD=ganzgeheim
S. 95 Pandoc-Beispiel und Mac M1

Das Dockerfile zum Pandoc-Beispiel setzt voraus, dass Sie einen Rechner mit x86-Architektur verwenden. Wenn das nicht der Fall ist, müssen Sie das Kommando zur Installation den Binärpakets ändern:

# Pandoc für M1/ARM-Architektur
RUN curl -L https://github.com/jgm/pandoc/releases/download/2.17.0.1/pandoc-2.17.0.1-1-arm64.deb \
   -o /tmp/pandoc.deb && \
   dpkg -i /tmp/pandoc.deb && \
   rm /tmp/pandoc.deb

Je nachdem, welche Dateien Sie unter Pandoc bearbeiten, kann ein zweites Problem auftreten: LaTeX sucht vergeblich nach lmodern.sty. Zur Abhilfe können Sie entweder lmodern und fonts-lmodern zur Paketliste hinzufügen, oder die Option --no-install-recommends entfernen. Das resultierende Image wird dadurch allerdings größer.

S. 117, Docker Compose mit Secrets

Im Listing auf S. 117 sind gleich zwei Fehler: Zum einen muss die Datei mit version: '3.1' eingeleitet werden, zum anderen bezieht sich das Secret im wordpress-Service auf mysql_user, nicht mysql_root. Korrekt sieht das Listing so aus:

# Datei test/docker-compose.yml (Listing gekürzt)
version: '3.1'
services:
   db:
     image: mariadb:latest
     secrets:
       - mysql_root
       - mysql_user
     environment:
       MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql_root
       MYSQL_PASSWORD_FILE: /run/secrets/mysql_user
       ...

   wordpress:
     image: wordpress:latest
     secrets:
       - mysql_user
     environment:
       WORDPRESS_DB_PASSWORD_FILE: /run/secrets/mysql_user
       ...

secrets:
  mysql_root:
    file: ./mysql-root-pw.txt
  mysql_user:
    file: ./mysql-user-pw.txt
S. 125 bis 128 zum Pull-Limit und zum Free-Account

Gerade als das Buch in Druck ging, hat Docker sein Subscriptions-Angebot umgestaltet. Das Free-Angebot heißt jetzt »Personal«. Nach wie vor kann Docker ohne jede Registrierung verwendet werden, wobei die Anzahl der Pull-Requests auf 100 pro sechs Stunden limitiert ist. Das Programm Docker Desktop darf ohne Bezahlung allerdings nur noch in kleinen Firmen (weniger als 250 Mitarbeiter bzw. weniger als 10 Millionen Dollar Jahresumsatz) genutzt werden. Diese Einschränkung ist neu seit Anfang September 2021.

Bei den zahlungspflichtigen Angeboten ist zu »Pro« und »Team« das neue Modell »Business« hinzugekommen.

Details: https://www.docker.com/pricing sowie golem.de

S. 196, Port für Nginx-Proxy

Der Port für die Weiterleitung auf den API-Service muss 80 lauten, wenn Sie — wie wir es gemacht haben — das Standard-nginx-Image dafür verwenden. Die Zeile

proxy_pass http://dockerbuch_api_1.nginxterminator_default:3000;

muss also korrekt

proxy_pass http://dockerbuch_api_1.nginxterminator_default:80;

lauten.

S. 201 bis 203 Node.js mit Express (Generator)

Das Node.js-Modul zum Konvertieren der Sass-Stylesheets in reguläres CSS funktioniert leider mit Node.js 16 nicht mehr und wird offensichtlich auch nicht mehr gewartet (letzte Änderung August 2020, Node 16 Issue auf github).

Damit Sie das Beispiel korrekt verwenden können entfernen Sie bei dem Skript-Aufruf auf Seite 202 das SASS Modul:

docker compose run -u $UID dev express --view hbs

Der zweite Absatz auf Seite 203, der die Funktionsweise von Sass-Stylesheets beschreibt ist damit natürlich hinfällig.

S. 267, Nextcloud + MariaDB

Die erst nach der Überarbeitung dieses Buchs erschienene Version 10.6 von MariaDB ist nicht mehr kompatibel zu Nextcloud. Der Grund besteht darin, dass das von Nextcloud genutzte Feature Compressed Row Format nur mehr Read-only funktioniert. Die MariaDB-Entwickler empfehlen, stattdessen Page Compression zu nutzen. Das erfordert aber in Nextcloud größere Umbauten samt Migrations-Scripts, die es so schnell nicht geben wird. Hintergründe:

Die einfachste Lösung besteht darin, im Zusammenspiel mit Nextcloud nicht die neueste MariaDB-Version zu verwenden, sondern explizit 10.5. Alternativ können Sie

command: ['--innodb_read_only_compressed=OFF']

beim db Eintrag in docker-compose.yml einzubauen. (Diese Option soll in zukünftigen MariaDB-Versionen ebenfalls gestrichen werden. Aber bis es MariaDB 10.7 gibt, wird es wohl auch neue Nextcloud-Versionen geben, die wieder besser mit MariaDB zusammenspielen.)


Letzte Änderung 21.1.2022. Vielen Dank an alle Leser, die mir Feedback geben!