Flerstegskompileringar

Docker för medelnivå

Mike Metzger

Data Engineering Consultant

Enkelstegsbyggen

  • Typiska Docker-images skapas med ett enda FROM-kommando
  • Varje tillägg till källimagen tar mer plats och försvårar hanteringen
  • Ta en applikation som måste kompileras innan den kan användas
    • Du kan lägga till alla nödvändiga komponenter i imagen, kompilera den och sedan konfigurera den slutliga imagen
    • Det lämnar ofta kvar överflödigt innehåll i imagen, även om det inte används
FROM ubuntu
RUN apt update
RUN apt install gcc -y
...
RUN make
CMD ["data_app"]
Docker för medelnivå

Flerstegskompileringar

  • Flerstegskompileringar använder flera containers
  • Har vanligtvis ett eller flera byggsteg
  • Slutliga komponenter kopieras in i en slutlig container-image
  • Byggstegen tas sedan bort automatiskt
    • Det sparar utrymme och minimerar container-imagens storlek
  • Använder viss extra syntax i Dockerfile
    • AS <alias>
    • COPY --from=<alias>
Docker för medelnivå

Exempel på flerstegskompilering

# 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 för medelnivå

Nu kör vi en övning!

Docker för medelnivå

Preparing Video For Download...