• 10 heures
  • Difficile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 20/04/2023

Codifiez votre infrastructure

Dans ce chapitre, nous allons voir comment l’Infrastructure-as-Code permet de faciliter le déploiement des applications grâce aux fameux conteneurs, aussi appelés containers

Construisez les images de votre application avec Docker

Notre application PetClinic est construite à partir de fichiers, nommésdockerfiles, déjà présents dans le contrôle de code source. Cesdockerfilessont présents dans le répertoireDockerdu projet et contiennent les lignes suivantes :

FROM eclipse-temurin:17 as builder
WORKDIR application
ARG ARTIFACT_NAME
COPY ${ARTIFACT_NAME}.jar application.jar
RUN java -Djarmode=layertools -jar application.jar extract

# Download dockerize and cache that layer
ARG DOCKERIZE_VERSION
RUN wget -O dockerize.tar.gz https://github.com/jwilder/dockerize/releases/download/${DOCKERIZE_VERSION}/dockerize-alpine-linux-amd64-${DOCKERIZE_VERSION}.tar.gz
RUN tar xzf dockerize.tar.gz
RUN chmod +x dockerize


FROM eclipse-temurin:17

WORKDIR application

# Dockerize
COPY --from=builder application/dockerize ./

ARG EXPOSED_PORT
EXPOSE ${EXPOSED_PORT}

ENV SPRING_PROFILES_ACTIVE docker

COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/snapshot-dependencies/ ./
COPY --from=builder application/application/ ./
ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]

Cedockerfilepart d’une image qui contient déjà la version 17 de Java et copie tous les .jar des différents projets, afin de construire les différentes images associées. Enfin, la dernière étape de cedockerfileest de lancer la commandeJavaavec le JAR associé. Le JAR est le résultat de la compilation de l’application Java.

Dans cette partie du cours, vous allez modifier le dockerfile pour voir l’impact de l’Infrastructure-as-Code sur votre pipeline de déploiement. Pour ce faire, suivez les manipulations dans la vidéo suivante.

De manière générale, tous les outils qui respectent la norme Open Container Initiative(OCI) peuvent piloter des conteneurs. Ces conteneurs deviennent alors l’artéfact de livraison standard et universel des applications.

Vous venez de voir à quel point l’Infrastructure-as-Code est pratique pour tester rapidement le changement de version d’un framework, ou le changement de version d’un middleware comme Apache ou IIS. En ne changeant que quelques lignes, nous pouvons alors relancer tout le pipeline, afin de voir s’il y a un impact sur le code applicatif.

Déployez votre application avec Docker Compose

L’Infrastructure-as-Code ne s’arrête pas là. Dans le cas de Docker, toute l’application peut être déployée grâce au fichierdocker-compose.ymlqui contient toute la définition de l’application, la relation entre les images Docker et le sens de démarrage de celles-ci.

Le nom des images Docker est codé en dur dans le fichierdocker-compose.ymlprésent dans le repository Git. Vous allez devoir remplacer le nom des images par les nouvelles images que vous venez de créer.

Remplacez alors toutes les lignes contenantspringcommunity/par votre nom de registry (chez moi,registry.gitlab.com/laurentgrangeau/). De plus, ajoutez aussi en bout de ligne le numéro de version de l’image que vous venez de créer:3.0.2.

Le fichierdocker-compose.ymldevrait ressembler à ceci (le fichier est volontairement tronqué) :

version: '2'

services:
  config-server:
    image: registry.gitlab.com/laurentgrangeau/spring-petclinic-config-server:3.0.2
    container_name: config-server
    mem_limit: 512M
    ports:
     - 8888:8888

  discovery-server:
    image: registry.gitlab.com/laurentgrangeau/spring-petclinic-discovery-server:3.0.2
    container_name: discovery-server
    mem_limit: 512M
    depends_on:
      - config-server
    entrypoint: ["./dockerize","-wait=tcp://config-server:8888","-timeout=60s","--","java", "org.springframework.boot.loader.JarLauncher"]
    ports:
     - 8761:8761

Et voilà, vos fichiers Docker et Docker Compose sont prêts à être lancés par votre pipeline de livraison continue.

En résumé

  • L’Infrastructure-as-Code est pratique pour tester rapidement le changement de version d’une framework ou d’un middleware.

  • Toute application peut être déployée grâce à Docker Compose.

Maintenant que vous maîtrisez cette étape qui permet de déployer automatiquement l’application à chaque modification de code, vous allez voir dans le prochain chapitre comment configurer votre pipeline pour qu’il déploie votre code grâce à Docker et Docker Compose, ainsi que le lancement automatique des tests.

Exemple de certificat de réussite
Exemple de certificat de réussite