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