The Doppler Quarterly (FRANÇAIS) Printemps 2018 | Page 58
Dockerfile:
FROM openjdk:8
COPY
target/demo-0.0.1-SNAPSHOT.jar /usr/src/demo-0.0.1-SNAPSHOT.
jar
CMD java -jar /usr/src/demo-0.0.1-SNAPSHOT.jar
Une fois le Dockerfile défini, il nous fallait compiler une image et lui attribuer un
label :
$ docker image build —tag demo:v0.0.1 .
Sending build context to Docker daemon 20.07MB
Étape 1 sur 3 : FROM openjdk:8
—-> db77212ffe05
Étape 2 sur 3 : COPY target/demo-0.0.1-SNAPSHOT.jar /usr/src/demo-
0.0.1-SNAPSHOT.jar
—-> Utilisation du cache
—-> edff15005e12
Étape 3 sur 3 : CMD java -jar /usr/src/demo-0.0.1-SNAPSHOT.jar
—-> Utilisation du cache
—-> 5207b1f7b396
Successfully built 5207b1f7b396
Successfully tagged demo:v0.0.1
La commande précédente recherche le Dockerfile dans le répertoire courant « . »,
lit les instructions contenues dans le Dockerfile, puis télécharge et compile l’image
en lui attribuant le libellé « demo:v0.0.1 ».
Une fois l'image compilée, nous pouvons l’exécuter.
$ docker container run —detach —publish 8080:8080 demo:v0.0.1
Nous avons exécuté le conteneur avec l'option « -detach » de manière à ce que le
processus tourne en arrière-plan. Du fait que l’application écoute les connexions
transitant sur le port 8080, nous devons publier ce port sur l’hôte. De plus, nous
réutilisons le même libellé que celui de la compilation précédente, à savoir «
demo:v0.0.1 ». À ce stade, nous pouvons utiliser un navigateur pour obtenir une
réponse depuis « http://localhost:8080/ ».
Étapes suivantes
Une fois le conteneur compilé et testé en local, nous devions l’insérer dans un reg-
istre. Pour ce faire, nous avons créé une organisation sur hub de Docker et utilisé
un référentiel privé destiné à contenir tous les versions du conteneur de
l’application.
Puis, nous avons actualisé notre pipeline CI/CD de manière à déclencher une com-
pilation chaque fois qu’une modification a été validée. Le pipeline effectue une
compilation sur l’application, exécute un build Docker sur le Dockerfile avec un
libellé de version, puis pousse celui-ci dans le référentiel Docker Hub.
Nous obtenons alors une image Docker accompagnée d’un libellé de version. Dès
lors, le déploiement d’une nouvelle version consiste simplement à mettre à jour le
cluster du conteneur en déployant une version plus récente de ce dernier. Le choix
du service AWS ECS (Elastic Container Service) tient au fait que nous avions d’un
service géré pour réduire le temps dévolu aux tâches opérationnelles.
56 | THE DOPPLER | PRINTEMPS 2018