Clone
5
Reference BUILD.de
Patrick Gniza edited this page 2026-08-17 10:48:39 +02:00

Deutsch | English

Romexis Docker Build-Prozess

Zurück zum README | English

Dieses Dokument beschreibt den Build-Prozess für die Romexis-Docker-Image-Familien.


Ziele des Builds

Das Build-System ist darauf ausgelegt, folgende Ziele zu erfüllen:

  • reproduzierbare Docker-Builds
  • wiederverwendbare Image-Schichten
  • lokale Entwickler-Builds über Skripte
  • native amd64- und arm64-Images
  • Multiarch-Manifeste
  • minimale finale Runtime-Images
  • wartbare Installer-Extraktionslogik
  • klare Trennung zwischen Payload-Extraktion, gemeinsamen Laufzeitabhängigkeiten und dienstspezifischen Runtime-Images

Image-Familien

Romexis Payload Image

Gebaut aus:

romexis-payload/Dockerfile

Enthält den extrahierten Installer-Payload:

/opt/romexis
/opt/romexis-mssql-db

Das Payload Image ist architekturunabhängig und enthält weder Java noch Chilkat noch Runtime-Dienste.

Tag:

gitea.buchhorster.de/planmeca/romexis-payload:<version>

Romexis Base Image

Gebaut aus:

romexis-base/Dockerfile

Enthält gemeinsame Server-Laufzeitabhängigkeiten wie Java, JavaFX/OpenJFX-Unterstützung, SQL-Werkzeuge, Firebird-Clientbibliotheken und gemeinsame Betriebssystembibliotheken.

Tags:

gitea.buchhorster.de/planmeca/romexis-base-jre:11-amd64
gitea.buchhorster.de/planmeca/romexis-base-jre:11-arm64
gitea.buchhorster.de/planmeca/romexis-base-jre:11

Romexis Server Image

Gebaut aus:

romexis/Dockerfile

Verwendet:

romexis-payload:<version>
romexis-base-jre:11-<arch>

Ergänzt:

  • native Chilkat-Laufzeit
  • Romexis Java PropertyAgent
  • Server-Entrypoint
  • Datenbankinitialisierung
  • KeyVault- und Pfadvorbereitung

Tags:

gitea.buchhorster.de/planmeca/romexis-server:<version>-amd64
gitea.buchhorster.de/planmeca/romexis-server:<version>-arm64
gitea.buchhorster.de/planmeca/romexis-server:<version>

Romexis Migration Service Image

Gebaut aus dem Migration-Service-Verzeichnis.

Stellt Web/API-Dienst für Migrations- und Restore-Workflows bereit.

Tags:

gitea.buchhorster.de/planmeca/romexis-migration-service:amd64
gitea.buchhorster.de/planmeca/romexis-migration-service:arm64
gitea.buchhorster.de/planmeca/romexis-migration-service:latest

Romexis Admin Image

Gebaut aus:

romexis-admin/Dockerfile

Verwendet das Romexis Payload Image und stellt eine browserbasierte Romexis Admin / RomexisConfig Umgebung bereit.

Das Image enthält:

  • Romexis Admin Dateien aus dem Payload Image
  • Xvfb
  • Openbox
  • xcompmgr
  • x11vnc
  • noVNC/websockify
  • JavaFX Runtime-Unterstützung
  • DxService Linux-Kompatibilitäts-Shim
  • optionales Debug-xterm
  • lokalisierten VNC-Start-Splashscreen

Tags:

gitea.buchhorster.de/planmeca/romexis-admin:<version>-amd64
gitea.buchhorster.de/planmeca/romexis-admin:<version>-arm64
gitea.buchhorster.de/planmeca/romexis-admin:<version>
gitea.buchhorster.de/planmeca/romexis-admin:latest

mRomexis WebApp Image

Gebaut aus:

romexis-mromexis-app/Dockerfile

Verwendet das Romexis Payload Image und kopiert:

/opt/romexis/broker/mromexis-html.war

in eine Tomcat-Runtime als:

/usr/local/tomcat/webapps/ROOT.war

Wichtig:

mromexis-html.war existiert erst ab Romexis 6.5.3.

Builds für ältere Romexis-Versionen werden bewusst übersprungen.

Tags:

gitea.buchhorster.de/planmeca/romexis-mromexis-app:<version>-amd64
gitea.buchhorster.de/planmeca/romexis-mromexis-app:<version>-arm64
gitea.buchhorster.de/planmeca/romexis-mromexis-app:<version>
gitea.buchhorster.de/planmeca/romexis-mromexis-app:latest

Versionsauflösung

Unterstützte Romexis-Versionen werden in folgender Datei definiert:

romexis-payload/romexis-versions.env

Format:

6_5_3_444_203=https://content.planmeca.com/files/Planmeca_Romexis_6.5.3.444.203_Win.zip

Build-Eingabe:

ROMEXIS_VERSION=6.5.3.444.203

Die CI-Pipeline iteriert über diese Datei und baut die benötigten Image-Familien für die verfügbaren Versionen.


Lokale Builds

docker-compose.build.yml wird nicht mehr verwendet.

Lokale Builds werden ausgeführt über:

scripts/build-local.sh
scripts/build-local.ps1

Linux/macOS

chmod +x scripts/build-local.sh
./scripts/build-local.sh all

Windows PowerShell

.\scripts\build-local.ps1 -Targets all

Ausgewählte Image-Familien bauen

./scripts/build-local.sh base server
./scripts/build-local.sh admin mromexis
./scripts/build-local.sh migration

Typische .env Werte für lokale Builds:

REGISTRY=gitea.buchhorster.de/planmeca
ROMEXIS_VERSION=6.5.3.444.203
IMAGE_SUFFIX=
TARGETARCH=amd64

ROMEXIS_IMAGE=romexis-server
MIGRATION_IMAGE=romexis-migration-service
ADMINISTRATION_IMAGE=romexis-admin
MROMEXIS_WEBAPP_IMAGE=romexis-mromexis-app

Für Feature-Branches:

IMAGE_SUFFIX=-feature-romexis-admin

Manuelle Docker-Build-Beispiele

Manuelle Builds sind hilfreich, um einzelne Image-Familien zu debuggen.

Payload

docker buildx build \
  --platform linux/amd64 \
  --provenance=false \
  --sbom=false \
  --build-arg ROMEXIS_VERSION=6.5.3.444.203 \
  -t gitea.buchhorster.de/planmeca/romexis-payload:6.5.3.444.203 \
  --load \
  ./romexis-payload

Base Image

docker buildx build \
  --platform linux/amd64 \
  --provenance=false \
  --sbom=false \
  --build-arg TARGETARCH=amd64 \
  --build-arg IMAGE_VERSION=11-amd64 \
  -t gitea.buchhorster.de/planmeca/romexis-base-jre:11-amd64 \
  --load \
  ./romexis-base

Server Image

docker buildx build \
  --platform linux/amd64 \
  --provenance=false \
  --sbom=false \
  --build-arg TARGETARCH=amd64 \
  --build-arg ROMEXIS_VERSION=6.5.3.444.203 \
  --build-arg ROMEXIS_BASE_IMAGE=gitea.buchhorster.de/planmeca/romexis-base-jre:11-amd64 \
  --build-arg ROMEXIS_PAYLOAD_IMAGE=gitea.buchhorster.de/planmeca/romexis-payload:6.5.3.444.203 \
  -t gitea.buchhorster.de/planmeca/romexis-server:6.5.3.444.203-amd64 \
  --load \
  ./romexis

Admin Image

docker buildx build \
  --platform linux/amd64 \
  --provenance=false \
  --sbom=false \
  --build-arg TARGETARCH=amd64 \
  --build-arg ROMEXIS_VERSION=6.5.3.444.203 \
  --build-arg ROMEXIS_PAYLOAD_IMAGE=gitea.buchhorster.de/planmeca/romexis-payload:6.5.3.444.203 \
  -t gitea.buchhorster.de/planmeca/romexis-admin:6.5.3.444.203-amd64 \
  --load \
  ./romexis-admin

mRomexis WebApp

docker buildx build \
  --platform linux/amd64 \
  --provenance=false \
  --sbom=false \
  --build-arg TARGETARCH=amd64 \
  --build-arg ROMEXIS_VERSION=6.5.3.444.203 \
  --build-arg ROMEXIS_PAYLOAD_IMAGE=gitea.buchhorster.de/planmeca/romexis-payload:6.5.3.444.203 \
  -t gitea.buchhorster.de/planmeca/romexis-mromexis-app:6.5.3.444.203-amd64 \
  --load \
  ./romexis-mromexis-app

Drone CI/CD Ablauf

Die Drone-Pipeline baut und veröffentlicht die Image-Familien in mehreren Stufen.

Grobe Reihenfolge:

payload
-> base amd64
-> server amd64
-> migration amd64
-> admin amd64
-> mRomexis amd64
-> base arm64
-> server arm64
-> migration arm64
-> admin arm64
-> mRomexis arm64
-> manifests

Die genaue Reihenfolge kann auf mehrere Architektur-Pipelines aufgeteilt sein.

Payload-Rebuild-Regeln

  • neue Version in romexis-versions.env: nur neues Payload Image bauen
  • geänderte URL einer bestehenden Version: diese Version neu bauen
  • geänderte romexis-copy-map.tsv, Payload-Dockerfile oder Hilfsskripte: alle Payload-Versionen neu bauen
  • vorhandenes Payload ohne relevante Änderung: überspringen

mRomexis-Versionsregel

mRomexis-WebApp-Images werden nur gebaut, wenn gilt:

version >= 6.5.3

Ältere Versionen werden übersprungen, weil das Payload kein mromexis-html.war enthält.

Manifest-Veröffentlichung

Zuerst werden architekturspezifische Tags erstellt:

<image>:<version>-amd64
<image>:<version>-arm64

Danach erstellt Drone das Multiarch-Manifest:

<image>:<version>

Für ausgewählte Dienste wird zusätzlich ein latest Alias aus der Default-Romexis-Version in .env.sample erzeugt.

Buildx verwendet:

--provenance=false
--sbom=false

Dies verbessert die Kompatibilität mit Registries, die OCI-Attestations nicht zuverlässig verarbeiten.


Zusammenhang zwischen Runtime Compose und Build

Die Runtime-Compose-Dateien verwenden Manifest-Tags statt architekturspezifischer Tags.

Für main bleibt IMAGE_SUFFIX leer:

IMAGE_SUFFIX=

Für Feature-Branches wird ein Branch-Suffix verwendet:

IMAGE_SUFFIX=-feature-romexis-admin

Die Runtime-Compose-Image-Referenzen lösen dadurch auf die passenden branch-spezifischen Manifeste auf.


Wartungshinweise

Neue Romexis-Version hinzufügen

  1. Installer-URL in romexis-payload/romexis-versions.env ergänzen.
  2. Prüfen, ob die Copy-Map weiterhin zum Installerlayout passt.
  3. Payload Image bauen oder durch CI bauen lassen.
  4. Server/Admin/mRomexis-Images bauen, sofern zutreffend.
  5. Stack starten und Server, Admin und WebApp testen.

Änderungen am Installerlayout

  1. romexis-payload/romexis-copy-map.tsv aktualisieren.
  2. Payload Image neu bauen.
  3. Benötigte Dateien unter /opt/romexis prüfen.
  4. Abhängige Runtime-Images neu bauen.

Änderungen am Admin Image

Prüfen:

  • JavaFX-Native-Libraries
  • /usr/lib/jni Symlinks
  • Openbox-Start
  • xcompmgr-Start
  • noVNC-Zugriff
  • VNC-Lifecycle-Verhalten
  • Admin-Sprache als Startparameter

Änderungen an der mRomexis WebApp

Prüfen:

  • mromexis-html.war existiert im Payload
  • Tomcat deployed ROOT.war
  • Proxy-Endpunkt ist kein offener Proxy
  • Versionsfilter überspringt weiterhin nicht unterstützte Romexis-Versionen

Build-Artefakte

Das finale Server Image enthält:

/opt/romexis
/opt/romexis-mssql-db
/usr/lib/libchilkat.so
/opt/romexis/server/RomexisPropertyAgent.jar
/opt/init-romexis-db.sh
/opt/fix-keystore-alias.sh
/entrypoint.sh

Das finale Admin Image enthält:

/opt/romexis/admin
/opt/romexis/admin/RomexisPropertyAgent.jar
/opt/romexis/admin/libDxService.so
/opt/romexis/admin/libDxService_64.so
/opt/romexis/admin/RxClientClinic.jar
/usr/local/bin/start.sh

Das finale mRomexis-WebApp-Image enthält:

/usr/local/tomcat/webapps/ROOT.war