Compilations multiétapes

Docker intermédiaire

Mike Metzger

Data Engineering Consultant

Compilations monophase

  • Les images Docker typiques sont créées avec une seule commande FROM
  • Chaque ajout à l'image source occupe de l'espace et complique sa gestion
  • Prenons une application à compiler avant usage
    • Vous pouvez ajouter tous les composants requis, la compiler, puis configurer l'image finale
    • Cela laisse souvent du contenu superflu dans l'image, même s'il n'est pas utilisé
FROM ubuntu
RUN apt update
RUN apt install gcc -y
...
RUN make
CMD ["data_app"]
Docker intermédiaire

Compilations multiétapes

  • Les compilations multiétapes utilisent plusieurs conteneurs
  • Comportent généralement une ou plusieurs phases de compilation
  • Les composants finaux sont copiés dans l'image finale du conteneur
  • Les phases de compilation sont ensuite supprimées automatiquement
    • Économie d'espace et image plus légère
  • Nécessite une syntaxe supplémentaire dans le Dockerfile
    • AS <alias>
    • COPY --from=<alias>
Docker intermédiaire

Exemple de compilation multiétapes

# Create initial build stage
FROM ubuntu AS stage1

# Install compiler and compile code RUN apt install gcc -y ... RUN make
# Start new stage to create final image FROM alpine-base
# Copy from first stage to final COPY --from=stage1 /data_app /data_app
# Run application on container start CMD ["data_app"]
Docker intermédiaire

Passons à la pratique !

Docker intermédiaire

Preparing Video For Download...