Datenschutzhinweis

 

Beim Laden dieses Inhalts werden Nutzungsinformationen an Vimeo übertragen und dort ggf. verarbeitet.

 

             

Betrieb unter Docker

Geändert am Di, 4 Nov um 1:10 NACHMITTAGS

Sollten Sie formcycle innerhalb einer Docker-Umgebung betreiben wollen, stehen Ihnen hierfür die entsprechenden Images zur freien Verfügung. Diese basieren auf einem Tomcat-Image inkl. Java 17 und sind so weit wie möglich und sinnvoll bereits gehärtet. Hierbei wird formcycle im Root-Kontext, also ohne Anwendungspfad betrieben und ist über den Container-Port 8080 erreichbar. Ferner werden etwaige "x-forwarded"-Header für einen Betrieb hinter z.B. einem Proxy-Server standardmäßig interpretiert.


Wichtiger Hinweis: Sofern Sie formcycle unter Docker verwenden möchten, wenden Sie sich bitte an Ihren organisatorischen Ansprechpartner, damit Ihre Lizenz entsprechend angepasst werden kann.


Inhalt


1. Verfügbare Docker-Images

Es stehen Ihnen insgesamt zwei verschiedene Images zur Verfügung:


xima/formcycle

Hierbei handelt es sich um den formcycle Master-Server, welcher das komplette Formular-Management, die Workflow-Verarbeitung und die Verwaltungsoberfläche bereitstellt.


xima/formcycle/frontend-server

Hierbei handelt es sich um einen formcycle Frontend-Server, welcher je nach Konfiguration mindestens die Funktionalitäten für die Auslieferung und Entgegennahme von Formularen und ggf. auch das Sachbearbeiter-Postfach bereitstellt.


2. Beziehen der Docker-Images

Bezogen werden können diese Images über die Registry docker.formcycle.eu. Als Image-Tags kommen die entsprechenden formcycle-Versionen zum Einsatz.


Beispiel:

Das Image xima/formcycle:8.3.0 stellt einen formcycle Master-Server in der Version 8.3.0 bereit und kann über docker.formcycle.eu/xima/formcycle:8.3.0 bezogen werden.


Ferner werden die Images zusätzlich mit dem spezifischeren Tag inkl. Version der Tomcat-Image bereitgestellt:


Beispiel:

Das Image xima/formcycle:8.3.0-9.0.98-jre17 stellt einen formcycle Master-Server in der Version 8.3.0 basierend auf einem Tomcat 9.0.98 und Java 17 bereit und kann über docker.formcycle.eu/xima/formcycle:8.3.0-9.0.98-jre17 bezogen werden.


Es wird empfohlen immer Images ohne die Angabe der Tomcat-Version zu verwenden. Dies ermöglicht eine einfachere Aktualisierung der Image durch den Neustart des Containers.


Aktuell verfügbare Tags

Allg. TagTag-Varianten
8.4.28.4.2-9.0.111-jre17
8.4.18.4.1-9.0.111-jre17
8.4.08.4.0-9.0.108-jre17 | 8.4.0-9.0.109-jre17 | 8.4.0-9.0.111-jre17 
8.3.98.3.9-9.0.109-jre17 | 8.3.9-9.0.111-jre17
8.3.88.3.8-9.0.106-jre17 | 8.3.8-9.0.108-jre17 | 8.3.8-9.0.109-jre17
8.3.78.3.7-9.0.106-jre17
8.3.68.3.6-9.0.100-jre17 | 8.3.6-9.0.105-jre17
8.3.58.3.5-9.0.100-jre17
8.3.48.3.4-9.0.98-jre17
8.3.38.3.3-9.0.98-jre17
8.3.28.3.2-9.0.99-jre17 | 8.3.2-9.0.98-jre17
8.3.18.3.1-9.0.98-jre17
8.3.08.3.0-9.0.98-jre17
8.2.68.2.6-9.0.98-jre17
8.2.58.2.5-9.0.97-jre17 | 8.2.5-9.0.98-jre17
8.2.48.2.4-9.0.97-jre17 | 8.2.4-9.0.98-jre17
8.2.38.2.3-9.0.93-jre17 | 8.2.3-9.0.95-jre17 | 8.2.3-9.0.96-jre17 | 8.2.3-9.0.97-jre17 | 8.2.3-9.0.98-jre17
8.2.28.2.2-9.0.93-jre17
8.2.18.2.1-9.0.93-jre17


3. Der Konfigurations-Ordner /xima

Für die persistente Konfiguration wird innerhalb des Containers der Ordner /xima verwendet. Dieser ist darauf ausgelegt, dass diese in den Host oder als persistentes Volume gemountet wird und somit den Neustart von Containern überdauert (siehe Beispiele). In diesem Ordner können bzw. werden zum Teil durch formcycle selbst folgende Unterornder angelegt:


/xima/config

Beinhaltet die eigentlichen formcycle-Konfigurationsdateien


/xima/prefs

Beinhaltet die Java Preferences-Konfiguration


/xima/drivers

Dient der Ablage von zu verwendeten Datenbank-Treibern


/xima/certificates

Dient der Ablage zu installierenden Zertifikaten (*.crt, *.cer, *.pem) oder eines zu verwendenden Java Keystores


4. Der Konfigurations-Ordner /tomcat

Neben Um eine Konfigurationsmöglichkeit des Tomcat-Servers zu gewährleisten, kann der Ornder /tomcat innerhalb des Containers verwendet werden. Dieser kann neben zusätzlichen Anwendungen und Bibliotheken auch Konfigurationsdateien beinhalten. Diese Dateien werden alle beim Start des Containers an die dafür vorgesehenen Stellen kopiert.

Die vom Container-Skript angedachte Ablagestruktur sieht hierbei wie folgt aus:


/tomcat/config

Dient der Ablage von Tomcat-Konfigurationsdateien


/tomcat/libs

Dient der Ablage von weiteren zu verwendenden Java-Bibliotheken 


/tomcat/webapps

Ermöglicht die Ablage von weiteren Webanwendungen (*.war-Dateien) welche im Tomcat installiert werden sollen


5. Standard-Installation

Mit folgendem Aufruf starten Sie einen Master-Server mit persistenter Konfiguration:


docker run -d -p 9080:8080 --name formcycle --restart=always --pull=always -v /docker-vol/formcycle:/xima docker.formcycle.eu/xima/formcycle:8.3.0


Hier wird formcycle in der Version 8.3.0 in einem Container mit dem Namen formcycle gestartet. Formcycle ist anschließend über den Port 9080 des Hosts erreichbar (http(s)://<host>:9080/). Die Konfiguration von formcycle wird im Host-Verzeichnis /docker-vol/formcycle abgelegt. Zu beachten ist, dass der notwendige Datenbank-Treiber in den Ordner /docker-vol/formcycle/drivers abgelegt werden muss.


Bestandteile des Standardaufrufs


Bestandteil des AufrufsBeschreibung
docker run -dStartet den Docker Container als Dienst
-p 9080:8080Gibt den Port 8080 des Containers als Port 9080 frei
--name formcycleBenennt den Container "formcycle"
--restart=alwaysStartet den Container automatisch neu falls dieser stoppen sollte
--pull=alwaysAktualisiert ggf. die Image vor dem Start des Containers
-v /docker-vol/formcycle:/ximaMountet den Ordner "/docker-vol/formcycle" des Hosts in den Container unter "/xima"
docker.formcycle.eu/xima/formcycle:8.3.0Gibt das zu verwendende Image an 


Achtung: Werden die Konfigurations-Ordner dem Container mittels bind-mount
bereitgestellt, ist darauf zu achten, dass dieser Ordner für den Benutzer innerhalb des Containers die entsprechenden Berechtigungen (Lesen und Schreiben) besitzt. Hierbei handelt es sich standardmäßig um den Benutzer ubuntu:ubuntu (1000:1000).


Starten eines Frontend-Servers

Sollten Sie einen Frontend-Server starten wollen, ist dieses ähnlich dem Starten des Master-Servers wie folgt möglich:


docker run -d -p 9081:8080 -p 4753:4753 --name frontend-server --restart=always --pull=always -v /docker-vol/frontend-server:/xima docker.formcycle.eu/xima/formcycle/frontend-server:8.3.0


Neben der Angabe eines anderen Persistenz-Ordners, eines anderen Container-Namens und der Verwendung des Frontend-Server-Images, kann es notwendig sein, dass der entsprechende Port für das Herstellen einer Verbindung durch einen Master-Server freigegeben werden muss. Dies ist nur der Fall, wenn der Frontend-Server nicht auf demselben Docker-Host innerhalb desselben Docker-Netzwerks betrieben werden soll. In diesem Beispiel wir der Standardport 4753 (-p 4753:4753) nach außen durchgereicht.


6. Zusätzliche Hinweise

Beim Betrieb von formcycle innerhalb einer Container-Umgebung gibt es einige Punkte die je nach Szenario beachtet werden müssen. Diese sind hierbei folgende:

  1. Für den Container-Betrieb ist ein spezieller Lizenz-Typ vorgesehen (Container-Lizenz). Dieser unterscheidet sich von der Standard-Lizenz dahingehend, dass hier keine Bindung basierend auf der Hardware-ID des betreibenden Systems stattfindet. Sollte diese nicht benutzt werden, müsste nach jedem Neustart eines Containers ggf. die Hardware-ID der Lizenz innerhalb von formcycle aktualisiert werden. Grund ist hierfür, dass sich diese bei jedem Neustart eines Containers ändern kann.
  2. Sollten mehrere formcycle-Instanzen betrieben werden, ist darauf zu achten, dass diese als Cluster konfiguriert sind und ein Load-Balancer o.ä. Sticky-Sessions verwendet.
  3. Sollten Frontend-Server zum Einsatz kommen und es dadurch zu einer Mischung zwischen Umgebungen (Container und Standalone) kommen, ist darauf zu achten, dass die Standalone-Umgebung die selbe Java und Tomcat-Version wie die Container-Umgebung verwendet. Durch Updates und sich damit schnell ändernden Versionen in der Container-Umgebung kann dies zu Aufwand führen, weswegen wir von einem Mischbetrieb eher abraten würden.


7. Monitoring und Metriken

Für das Monitoring des Containers und von formcycle wird die Docker-Image standardmäßig mit dem Prometheus JMX-Exporter ausgeliefert. Dieser wird als separater Agent gestartet und ist standardmäßig über den Port 5556 erreichbar. Dieser Port wird aus Sicherheitsgründen standardmäßig nicht freigegeben. Sollte dieser aber erreichbar sein (z.B. innerhalb des selben Docker networks), stellt dieser die Funktionalitäten über eine Web-Schnittstelle zur Verfügung und kann so z.B. mittels Grafana angebunden werden.


8. Installation von Zertifikaten

Im innerhalb des Containers neben den Standard-Zertifikaten auch eigene Zertifikate verwenden zu können, gibt es die Möglichkeit über den Ornder (standardmäßig) /xima/certificates zusätzliche Zertifikate zu installieren. Hierbei werden die Formate *.crt, *.cer, und *.pem unterstützt. Alle Dateien mit diesen Dateiänderungen werden beim Start des Containers unter Verwendung des Dateinamen als Alias in den Standard Keystore von Java importiert. Ferner gibt es alternativ die Möglichkeit in diesem Ornder einen entsprechenden cacerts-Keystore abzulegen. Dieser überschreibt hierbei beim Container-Start den cacerts-Keystore von Java und muss demnach auch das selbe Passwort verwenden (Standard: changeit). Da es sich hierbei um eine Überschreibung handelt ist darauf zu achten, dass man einen entsprechenden Keystore als Grundlage verwendet und diesen nur um weitere Zertifikate ergänzt.


9. Konfiguration von formcycle

Neben der Standard-Konfiguration über die Verwaltungsoberfläche erlaubt es die formcycle Docker-Image auch grundlegende Konfigurationen mittels Environment-Variablen. Hierbei handelt es sich um Parameter, welcher beim Start eines Docker-Containers übergeben werden können. Für die Konfiguration der Datenbank-Anbindung und der automatischen Aktualisierung stehen auf dem Master-Server hierbei folgende Parameter zur Verfügung:



Variable
Erlaubte WertBeschreibung
XFC_DATABASE_SHORT_NAMEmysql (Oracle MySQL)
mariadb (MariaDB)
oracle (Oracle Database)
postgresql (PostgreSQL)
sqlserver (MS SQL Server)
Legt den Typ der anzubindenen Datenbank fest.
XFC_DATABASE_JDBC_URLEine JDBC-URL gemäß der verwendeten Datenbank.

Beispiel MySQL:
jdbc:mysql://db-server:3306/formcycle
Gibt die JDBC-URL zur Herstellung der Verbindung zur System-Datenbank an.
XFC_DATABASE_LOGIN_USER(Freitext)Gibt den zu verwendenden Benutzernamen zur Herstellung der Verbindung zur System-Datenbank an.
XFC_DATABASE_LOGIN_PASSWORD(Freitext)Gibt daszu verwendenden Passwort zur Herstellung der Verbindung zur System-Datenbank an.
XFC_DATABASE_POOL_MAX_CONNECTIONS(Positive Ganzzahlen)Gibt die max. Größe des zu verwendenden Datenbank-Pools an.
XFC_DATABASE_POOL_CONNECTION_TIMEOUT(Positive Ganzzahlen)Gibt an nach wie vielen Sekunden eine ungenutzte Datenbank-Verbindung innerhalb des Pools geschlossen werden soll.
XFC_DATABASE_ENCRYPTION_ALGORITHMPBE_WITH_MD2_AND_DES
PBE_WITH_MD2_AND_RC2
PBE_WITH_MD5_AND_DES
PBE_WITH_MD5_AND_RC2
PBE_WITH_SHA1_AND_DES
PBE_WITH_SHA1_AND_RC2
PBE_WITH_SHA_AND_2_KEYTRIPLEDES_CBC
PBE_WITH_SHA_AND_3_KEYTRIPLEDES_CBC
PBE_WITH_SHA_AND_128BITRC2_CBC
PBE_WITH_SHA_AND_40BITRC2_CBC
PBE_WITH_SHA_AND_128BITRC4
PBE_WITH_SHA_AND_40BITRC4
PBE_WITH_SHA_AND_TWOFISH_CBC
PBE_WITH_SHA_AND_IDEA_CBC

Gibt den Algorithmus an, der bei der Anwendungs-seitigen Verschlüsselung von Daten benutzt werden soll.
XFC_DATABASE_ENCRYPTION_PASSWORD(Freitext)Gibt das Passwort an, das bei der Anwendungs-seitigen Verschlüsselung von Daten benutzt werden soll.
XFC_DATABASE_ENCRYPT_FORM_DATAtrue (aktiviert)
false (deaktiviert, standard)
Gibt an, ob Formular-Daten verschlüsselt werden sollen.
XFC_AUTO_UPDATEtrue (aktiviert)
false (deaktiviert, standard)
Gibt an, ob Datenbank- und System-Aktualisierungen beim Systemstart automatisch ausgeführt werden sollen.
XFC_AUTO_UPDATE_PLUGINS

true (aktiviert)
false
(deaktiviert, standard)

Gibt an, ob (wenn möglich) Plugin-Aktualisierungen beim Systemstart automatisch ausgeführt werden sollen.
XFC_UPDATE_CALLBACK_EMAILS

Eine einzelne oder Komma-separierte Liste von E-Mail-Adressen. 


Beispiele:

admin@example.com
admin1@exampe.com,admin2@example.com
Gibt eine Liste von E-Mail-Adresse an, die nach einer erfolgten automatischen Aktualisierung über deren Durchführung benachritigt werden sollen.


10. Konfiguration von Tomcat

Da die formcycle Docker-Image auf der offiziellen Tomcat Docker-Image basiert stehen neben den Anpassungen, die bereits durch formcycle durchgeführt werden, die Standardwege zur Konfiguration des Tomcat-Servers zur Verfügung. Hierfür können die entsprechenden Variablen der Tomcat Docker-Image benutzt werden:


Variable
Erlaubte WertBeschreibung
JAVA_OPTS(Freitext)Variable für Java-weiter Konfigurationen wie z.B. die maximale Speichergröße, Garbage Collector-Optionen oder Debug-Parameter. Diese Optionen gelten für jeden Java-Prozess, der gestartet wird. 
CATALINA_OPTS(Freitext)Variable für weitere, Tomcat-spezifische Konfigurationen. Diese Optionen betreffen nur den Tomcat-Prozess und nicht andere Java-Prozesse im gleichen System.


Achtung: Da auf Grund verschiedenster Umgebungen keine festen Werte bezüglich der Speicherverwendung innerhalb der formcycle Docker-Image festgelegt sind, ist es empfehlenswert diese mittels z.B. JAVA_OPTS zu hinterlegen. Sollte dies nicht hinterlegt sein, greift der Java-Standard, der eine Speicher-Benutzung von max. 25% des physischen Speichers vorsieht. Mehr dazu finden Sie unter Tomcat-Einstellungen.



11. Migration einer bestehenden Installation

Sollten Sie eine bestehende Standalone-Installation von formcycle in eine Container-Umgebung migrieren wollen, ist dies problemlos möglich. Als einziger elementarer Schritt neben der Standardkonfigurationen des Containers sind hier die vorhandenen Konfigurationsdateien in den entsprechenden Ordner für den Container zu kopieren (siehe "3. Der Konfigurations-Ordner /xima"). Je nach getroffenen Anpassungen oder Umstellungen sind ggf. noch folgende Änderungen/Aktionen durchzuführen:

  • Anpassungen in der server.xml übernehmen (siehe "4. Der Konfigurations-Ordner /tomcat")
  • Ggf. Anpassung der JDBC-URL und Migration der Einstellungen in ENV-Parameter
  • Ggf. Anpassung der Monitoring-Anbindungen
  • Sollten Aktionen Dateien im Dateisystem ablegen, sind hierfür entsprechende Mounts/Volumes zu erstellen
  • Es ist zu prüfen, dass alle angebundenen Fremdsysteme auch im Container erreichbar sind


12. Erweitere Informationen

Neben der Grundlegenden Konfiguration von formcycle stehen zusätzlich noch weiter Environment-Paramter zur Konfiguration des Containers zur Verfügung:


Variable
Standard-WertBeschreibung
TOMCAT_PORT8080Gibt den erwarteten Tomcat-Port des Containers an. Dieser wird hauptsächlich für den Healthcheck des Containers benutzt und ist anzupassen so bald eine entsprechende Änderung an der server.xml stattgefunden hat.
TOMCAT_CONFIG_DIR/tomcat/configGibt ein Verzeichnis an unter welchem zusätzlich Tomcat-spezifische Konfigurations-Dateien hinterlegt werden können. Der Inhalt dieses Verzeichnisses wird beim Start in den conf-Ordner das Tomcats kopiert und ermöglicht so das Überschreiben der Server-Konfiguration.
TOMCAT_LIBS_DIR/tomcat/libsGibt ein Verzeichnis an unter welchem zusätzliche Java-Bibliotheken für den Tomcat-Server hinterlegt werden können. Der Inhalt dieses Verzeichnisses wird beim Start in den lib-Ordner des Tomcat-Servers kopiert.
TOMCAT_WEBAPPS_DIR/tomcat/webappsGibt ein Verzeichnis an unter welchem zusätzliche Webanwendungen (*.war) hinterlegt werden können. Diese werden beim Start in den webapps-Ordner des Tomcat-Servers kopiert und stehen gemäß ihrem Namens anschließend neben formcycle zur Verfügung.
XFC_CONFIG_DIR/xima/configGibt das Verzeichnis an unter welchem formcycle die eigenen Konfigurationen speichern und laden soll.
XFC_SYSTEM_PREF_DIR/xima/prefs/userGibt das Verzeichnis an unter welchem Java System-Preferences gespeichert werden sollen
XFC_USER_PREF_DIR/xima/prefs/systemGibt das Verzeichnis an unter welchem Java Benutzer-Preferences gespeichert werden sollen
XFC_DRIVERS_DIR/xima/driversGib das Verzeichnis für zusätzlich zu installierende Datenbank-Treiber an. Der Inhalt dieses Verzeichnisses wird beim Start des Containers in den lib-Ordner des Tomcat-Servers kopiert.
XFC_CERT_DIR/xima/certificatesGibt das Verzeichnis für zu installierende Zertifikate (*.crt, *.cer, *.pem)  oder des zu installierenden Keystores an.
XFC_SCAN_DIR/xima-data/scanGibt das Verzeichnis an unter welchem formcycle Dateien für einen Datei-basierend Virenscan ablegen soll.
XFC_TEMP_DIR/xima-data/tempGibt das Verzeichnis an unter welchem formcycle temporäre Dateien ablegen soll.
XFC_DATA_DIR/xima-data/dataGibt das Verzeichnis an unter welchem formcycle Lautzeit-Dateien welche zum Beispiel innerhalb des Workflows erzeugt werden ablegen soll.
XFC_PLUGIN_DIR/xima-data/pluginsGibt das Verzeichnis an unter welchem formcycle Plugins ablegen soll.
XFC_CACHE_DIR/xima-data/cacheGibt das Verzeichnis an unter welchem formcycle seinen Anwendungs-Cache ablegen soll.
JMX_EXPORTER_PORT5556Gibt den Port an, über welchen der Prometheus JMX-Exporter zur Verfügung gestellt wird.
JMX_EXPORTER_OPTS-javaagent:/xima-deployment/jmx_prometheus_javaagent.jar=${JMX_EXPORTER_PORT}:/xima-deployment/jmx-exporter-config.yamlGibt die CATALINA_OPTS an, welche für die Definition des Prometheus JMX-Exporters verwendet wird.
JAVA_PREFS_OPTS-Djava.util.prefs.systemRoot=${XFC_SYSTEM_PREF_DIR} -Djava.util.prefs.userRoot=${XFC_USER_PREF_DIR}Gibt die CATALINA_OPTS an, welche für das Konfigurieren der Java Preferences-Verzeichnisse benutzt wird.


Eine Änderung der Standard-Konfiguration erfollgt auf eigene Verantwortung und sollte nur in Ausnahmefällen nötig werden.



Daten-Verzeichnis /xima-data

Neben dem Konfigurations-Ornder wird innerhalb des Containers noch das Verzeichnis /xima-data verwendet. In diesem werden Dateien zur Laufzeit des Containers abgelegt und durch formcycle verwaltet. Einzig der Unterordner /xima-data/scan kann hier von Bedeutung sein, da dieser es über einen entsprechenden Mount ermöglicht Uploads aus Formularen oder der Verwaltungsoberfläche mittels Virenscanner zu untersuchen.


Es wird empfohlen die Anbindung von Virenscannern über die dafür vorgesehenen formcycle-Plugins zu realisieren.

War dieser Artikel hilfreich?

Das ist großartig!

Vielen Dank für das Feedback

Leider konnten wir nicht helfen

Vielen Dank für das Feedback

Wie können wir diesen Artikel verbessern?

Wählen Sie wenigstens einen der Gründe aus
CAPTCHA-Verifikation ist erforderlich.

Feedback gesendet

Wir wissen Ihre Bemühungen zu schätzen und werden versuchen, den Artikel zu korrigieren