Talend ESB-Strecken in einem Docker-Container ausführen

Talend Open Studio for ESB (Download) ist eine erweiterte Version des ETL-Werkzeugs Talend Open Studio. Neben der Möglichkeit Daten aus unterschiedlichen Quellen zu extrahieren, diese umzuwandeln und abzugleichen bevor sie anderenorts gespeichert werden, erlaubt es ESB auch auf einfache Weise SOAP- oder REST-Webservices zu entwicklen.

In unserem Blog haben wir schon früher über die Möglichkeit berichtet, so zum Beispiel enaio®-Dashlets auf einfache Weise zu entwerfen.

Nach der Entwicklung müssen diese Strecken im von Talend ESB mitgelieferten Karaf-Container-Runtime deployed werden, um als eigenständiger Service ohne die Entwicklungsumgebung genutzt werden zu können. Diese Laufzeitumgebung kann unter Windows als Service beziehungsweise Linux als Daemon eingerichtet werden.

Flexibel und reproduzierbar lässt sich diese Laufzeitumgebung aber auch in wenigen Handgriffen als Docker-Container erzeugen. Hier ein einfaches Beispiel:

Dockerfile

FROM ubuntu:20.04
RUN apt-get update && apt-get -y install \
    openjdk-8-jre-headless \
    unzip \
    wget \
    && rm -rf /var/lib/apt/lists/*
RUN wget -O /tmp/esb.zip \
    "https://freefr.dl.sourceforge.net/project/talendesb/Talend Open Studio for ESB/7.3.1/TOS_ESB-20200219_1130-V7.3.1.zip"
RUN cd /tmp/ \
    && unzip esb.zip Runtime_ESBSE/* -d /opt/ \
    && rm esb.zip \
    && cd /opt/Runtime_ESBSE/ \
    && mv * .. \
    && cd .. \
    && rmdir Runtime_ESBSE
CMD ["/opt/container/bin/trun", "server"]

Sofern die Docker-Umgebung bereits installiert ist, kann diese Datei als Dockerfile mittels der Standardwerkzeuge gebaut und direkt gestartet werden.

Nutzung

docker build . -t talend-karaf
docker run -d -p 8080:8088 --name=talend-karaf talend-karaf

Je nach Anbindung an den Download-Server und Computer kann der build-Schritt durchaus einige Minuten in Anspruch nehmen. Danach kann der Container aber beliebig wiederverwendet oder ergänzt werden.

In diesem Beispiel öffnen wir einen Port 8080 am Dockerhost, der auf den Port 8088 des Containers weitergeleitet wird. In unserer Talend ESB-Strecke können wir diesen Port vorsehen/konfigurieren:

Die Talend-Strecke wird beim Übersetzen in der Talend-Umgebung in eine einzelne JAR-Datei zusammengebaut. Diese können wir endwender fix im Dockerfile dem Container hinzufügen (ADD myservice_0.1.jar /opt/container/deploy/myservice.jar) oder nachträglich in den laufenden Container kopieren:

docker cp \
    ./myservice_0.1.jar \
    talend-karaf:/opt/container/deploy/myservice.jar

Diese Variante erlaubt wahlweise es im Laufe des Containerlebens diverse Versionen des Services zu deployen.

1 Like

Übrigens: Wer die Talend-ESB-Runtime ab Version 7.3.x trotz der hier beschriebenen Möglichkeiten lieber als Windows-Service installieren möchte, kann zur Vorbereitung die mitgelieferte trun-Shell nutzen (trun.bat).

Dort kann über diese Kommandofolge die nötigen Funktionen installiert und eine Batch-Datei vorbereitet werden, welche die spätere Service-Installation erlaubt:

feature:install wrapper
wrapper:install -s AUTO_START -n TALEND-CONTAINER-731 -d Talend-Container-7.3.1 -D "Talend Container Service Version 7.3.1"