DITA-Output mit Docker builden

Andreas Petersell am 29.11.2021

Sie müssen nicht bei jedem neuen Rechner das DITA-OT erneut installieren. Sie können die verschiedenen Versionen des DITA-OTs auch über Docker nutzen und so sich die vielen Installationen sparen.

Quellen

Diese Quelle ermöglichten mir diesen Artikel:

Kontext

Mein Sohn hatte neulich mehrere alte PCs aus einer Betriebsauflösung geschenkt bekommen. Einen davon hatte er mir neu aufgebaut - mit schön viel Arbeitsspeicher. Als ich das Ding zum ersten Mal anmache, rief ich verwundert: Hey, das ist ja Linux! Kann ich nicht wenigstens so etwas wie Dual-Boot bekommen, wo ich mich zur Not auch für Window entscheiden kann? Nichts da! Du wirst es lieben. Nun mußte ich also sämtliche Programme neu installieren. Bis ich innerhalb der DITA-Dokumention auf den Artikel Running the dita command from a Docker image stieß.

Es wäre schon schön, wenn ich das DITA-OT nicht so oft neu installieren müßte. Inklusive des richtigen JREs usw. Selbst wenn ich ein neues DITA-OT ausprobieren möchte, muß ich es nicht gleich installieren, sondern könnte ein anderes Image nutzen.

Natürlich habe ich beim Befolgen der Anleitung viel falsch gemacht, und fast hätte ich es aufgegeben. Denn die Anleitung setzt voraus, dass der Nutzer im Umgang mit Linux und Docker erfahren ist. Das war bei mir nicht der Fall.

Anleitung

Tip
Voraussetzung

Sie haben Docker installiert.

In der Dokumentation zum DITA OpenToolkit heißt es:

To build output, map a host directory to a container volume and specify options for the dita command.

DITA-OT Dokumentation
$ docker run -it \
  -v /Users/username/source:/src ghcr.io/dita-ot/dita-ot:3.6.1 \
  -i /src/input.ditamap \
  -o /src/out \
  -f html5 -v

This command sequence specifies the following options:

  • -v mounts the source subfolder of your home directory and binds it to the /src volume in the container

  • -i specifies the input.ditamap file in your source folder as the input map file

  • -o writes the output to source/out

  • -f sets the output format to HTML5, and

  • -v displays build progress messages with verbose logging

Mein Fehler Nr. 1

Der Quellordner ist nicht in /Users/username/ gelegen, denn ich bin nicht als Nutzer root unterwegs. Bei mir ist der Pfad meiner DITA-Quelldateien als Nutzer andreas dieser: /home/andreas/DITA-ZKS.

Mein Fehler Nr. 2

Wenn es heißt:

-v mounts the source subfolder of your home directory and binds it to the /src volume in the container,

dann wird aus dem Pfad zu meiner Ditamap-Datei /home/andreas/DITA-ZKS/zks.ditamap eben genau /src/zks.ditamap. Das selbe gilt für den Pfad des Ordner out.

Richtiger Docker-Befehl

Nach folgendem Docker-Run-Befehl füllte sich mein output-Ordner out mit den gewünschten HTML-Seiten.

Docker-Befehl auf der Konsole
$ docker run -it \
  -v /home/andreas/DITA-ZKS:/src ghcr.io/dita-ot/dita-ot:3.6.1 \
  -i /src/zks.ditamap \
  -o /src/out \
  -f html5 -v