Build-uri multi-etapă

Docker intermediar

Mike Metzger

Data Engineering Consultant

Build-uri cu o singură etapă

  • Imaginile Docker tipice sunt create cu o singură comandă FROM
  • Fiecare adăugare la imaginea sursă mărește dimensiunea și complică gestionarea acesteia
  • Considerați o aplicație care trebuie compilată înainte de utilizare
    • Puteți adăuga toate componentele necesare, compila imaginea și o configura pentru utilizare
    • Aceasta lasă adesea conținut superfluu în imagine, chiar dacă nu este utilizat
FROM ubuntu
RUN apt update
RUN apt install gcc -y
...
RUN make
CMD ["data_app"]
Docker intermediar

Build-uri multi-etapă

  • Build-urile multi-etapă utilizează mai multe containere
  • De regulă, include una sau mai multe etape de build
  • Componentele finale sunt copiate într-o imagine de container finală
  • Etapele de build sunt apoi eliminate automat
    • Economisind spațiu și minimizând dimensiunea imaginii de container
  • Utilizează sintaxă suplimentară în Dockerfile
    • AS <alias>
    • COPY --from=<alias>
Docker intermediar

Exemplu de build multi-etapă

# 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 intermediar

Să exersăm!

Docker intermediar

Preparing Video For Download...