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.
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.