Les instructions principales
| Instruction | Rôle |
|---|---|
FROM | image de base (ex. eclipse-temurin:21-jre) |
WORKDIR | répertoire de travail dans l'image |
COPY | copier des fichiers du projet dans l'image |
RUN | exécuter une commande à la construction |
EXPOSE | documenter le port utilisé |
ENTRYPOINT / CMD | commande lancée au démarrage du conteneur |
Un Dockerfile simple
FROM eclipse-temurin:21-jre WORKDIR /app COPY target/fioul-api.jar app.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","/app/app.jar"]
Construire l'image
docker build -t fioul-api:1.0 . docker run -d -p 8080:8080 fioul-api:1.0
Le contexte & le cache — le
. est le « contexte » envoyé à Docker. Chaque instruction crée une couche mise en cache : placer ce qui change le moins en haut accélère les reconstructions.Build multi-étapes pour l'API
On compile dans l'image (étape build) puis on ne garde que le jar dans une image finale légère (sans Maven ni JDK complet).
# étape 1 : compilation FROM maven:3-eclipse-temurin-21 AS build WORKDIR /src COPY . . RUN mvn -B clean package -DskipTests # étape 2 : image finale légère FROM eclipse-temurin:21-jre WORKDIR /app COPY --from=build /src/target/fioul-api-*.jar app.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","/app/app.jar"]
🛢️ Sur le projet Fioul Groupé
Écris ce Dockerfile multi-stage pour l'API Spring du projet, ajoute un .dockerignore (chapitre 8), et construis fioul-api:1.0. Tu obtiens une image portable qui embarque l'API — prête à être orchestrée avec la base au chapitre 7.
À retenir
- Le Dockerfile décrit la construction de ton image (FROM, COPY, RUN, ENTRYPOINT).
docker build -t nom:tag .; couches mises en cache.- Le multi-stage produit une image finale légère (compile puis ne garde que l'artefact).