
Builder une application legacy avec docker
Suite à la reprise d’une application legacy en GWT pour un client, nous avons rencontré des problèmes lors de la compilation. En effet celle-ci demandait l’installation d’anciennes librairies non disponible sur les environnements actuels des développeurs.
L’idée était donc de fournir une solution de compilation fonctionnelle sur tout environnement :
poste développeur
poste client
serveur de développement / intégration
Pour répondre à ce besoin nous avons opté pour l’utilisation de docker. Nous avons créé une image docker à partir d’une image maven, sur laquelle nous avons téléchargé les librairies GWT nécessaires à la compilation du projet. Ce qui donne le Dockerfile suivant :
Dockerfile.build
FROM maven:3.6-jdk-7
WORKDIR /var
RUN curl https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/google-web-toolkit/gwt-linux-1.5.3.tar.bz2 | tar xjf -
Nous avons ensuite créé un script permettant de lancer la compilation :
build-with-docker.sh
docker build -t mvn-gwt -f Dockerfile.build .
docker run \
-v ~/.m2:/var/maven/.m2 \
-v "$PWD":/usr/local/src/ \
-w /usr/local/src/ \
-ti --rm -u $(id -u) \
-e MAVEN_CONFIG=/var/maven/.m2 \
mvn-gwt \
mvn -Duser.home=/var/maven -Dgoogle.webtoolkit.home=/var/gwt-linux-1.5.3 $1
À partir de ce script la compilation du projet peut être lancé depuis n’importe quel environnement en lançant simplement la commande :
./build-with-docker.sh <target_maven>