Apache Hop publie des images Docker officielles. Elles simplifient l’exécution sur un serveur, dans une chaîne CI ou sur Kubernetes. Voici comment s’en servir.
Exécuter un pipeline en une commande
L’image apache/hop contient Hop Run. On monte le dossier du projet et on indique le pipeline à lancer :
docker run --rm \
-v $(pwd)/orders:/project \
-e HOP_PROJECT_FOLDER=/project \
-e HOP_PROJECT_NAME=orders \
-e HOP_ENVIRONMENT_NAME=prod \
-e HOP_ENVIRONMENT_CONFIG_FILE_NAME_PATHS=/project/env/prod.json \
-e HOP_FILE_PATH=load-orders.hpl \
-e HOP_RUN_CONFIG=local \
apache/hop:latest
Les variables HOP_* remplacent les options de la ligne de commande. Le conteneur se termine quand le pipeline se termine : c’est parfait pour un ordonnanceur ou un job CI.
Passer des secrets
Ne mettez pas de mots de passe dans les fichiers d’environnement versionnés. Injectez-les comme variables Docker (-e DB_PASSWORD=…) et référencez-les dans Hop avec ${DB_PASSWORD}. Sur Kubernetes, utilisez un Secret monté en variables d’environnement.
Hop Server en conteneur
L’image apache/hop-web fournit Hop GUI dans le navigateur ; pour l’exécution distante, on utilise l’image standard avec HOP_SERVER_* :
docker run -d -p 8080:8080 \
-v $(pwd)/orders:/project \
-e HOP_SERVER_PORT=8080 \
-e HOP_SERVER_USER=admin \
-e HOP_SERVER_PASS=change-me \
-e HOP_PROJECT_FOLDER=/project \
-e HOP_PROJECT_NAME=orders \
apache/hop:latest /opt/hop/hop-server.sh
Hop GUI peut alors envoyer les pipelines à ce serveur via une configuration d’exécution « remote ». Voir aussi notre article sur Hop Server et l’exécution distante.
Dans une chaîne CI
Le même conteneur lance les tests unitaires de pipelines à chaque commit, par exemple depuis un pipeline Jenkins. C’est exactement ce que nous mettons en place dans la formation Apache Hop — Perfectionnement et industrialisation.
Les noms de variables évoluent d’une version à l’autre : vérifiez la documentation de l’image pour la version que vous utilisez.