von Patrick Gundlach |

Docker Image für den Servermodus

Ein Docker Image für den Servermodus des speedata Publisher ist leicht erstellt. Damit kann man per REST-API Publishing Aufträge ohne eigene Installation ausführen.

docker logo

Mit Docker kann man Programme in einer virtuellen Maschine ausführen. Dadurch spart man sich die lokale Installation.

Es wird ein Ubuntu Image als Basis genommen und den speedata Publisher per apt hinzugefügt. Details dazu sind in der Installationsanleitung im Handbuch zu finden.

Die benutzte Verzeichnisstruktur auf dem lokalen Rechner ist folgende:

.
├── Dockerfile
└── files
    ├── gpgkey-speedata.txt
    ├── publisher.cfg
    └── speedata.list

Die Dateien werden (in umgekehrter Reihenfolge) einzeln erläutert.

speedata.list

Die Datei enthält nur die eine Zeile

deb https://software.speedata.de/download/devel stable main

und dient als Angabe für die Paketquelle des speedata Publishers.

gpgkey-speedata.txt

Die Dateien sind mit GnuPG signiert, daher sollte der öffentliche Schlüssel dem System bekannt gemacht werden, damit eine Integritätsprüfung gemacht werden kann:

curl -O http://de.speedata.s3.amazonaws.com/gpgkey-speedata.txt

publisher.cfg

Die Datei steuert das Verhalten des Servers. Alternativ zur Angabe in dieser Konfigurationsdatei können auch die Angaben auf der Kommandozeile gemacht werden.

[server]
logfile=STDOUT
extra-dir=/verzeichnisimcontainer
address=0.0.0.0
# Skript, das vor jeder Verabeitung ausgeführt werden soll
# filter=convert.lua

Dockerfile

Die eigentliche Steuerung der Image-Erzeugung liegt in der Datei Dockerfile:

from ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive
RUN apt -y update &&            \
   apt install -y               \
        gnupg                   \
        openjdk-13-jre-headless \
        inkscape

# gnupg: um den speedata-Schlüssel hinzuzufügen
# inkscape: falls SVG-Dateien on-the-fly nach
#           PDF gewandelt werden sollen
# jre: falls XSLT-Skripte ausgeführt werden müssen

# Paketquelle für den speedata Publisher
COPY files/speedata.list  /etc/apt/sources.list.d/
COPY files/gpgkey-speedata.txt /tmp/gpgkey-speedata.txt
RUN apt-key add /tmp/gpgkey-speedata.txt

# speedata Publisher installieren
RUN apt-get update
RUN apt install -y speedata-publisher

# /server ist nun das Verzeichnis
# in dem der Server ausgeführt wird.
WORKDIR /server
ADD files/publisher.cfg /server


# Wird beim Ausführen automatisch gestartet
ENTRYPOINT ["sp", "server"]

Erzeugt wird dieses Image mit

docker build -t speedata-server .

Aufgerufen wird dieses Image mit

docker run --rm -p5266:5266 speedata-server

man könnte natürlich noch mit -v /verzeichnis/auf/dem/Hostrechner:/verzeichnisimcontainer lokale Verzeichnisse mit dem Container verbinden.

Damit steht der Port 5266 auf dem lokalen Rechner für die API zur Verfügung, die im Handbuch ausführlich dokumentiert ist.