Kompilacje wieloetapowe

Docker średnio zaawansowany

Mike Metzger

Data Engineering Consultant

Kompilacje jednoetapowe

  • Typowe obrazy Docker tworzone są przy użyciu jednego polecenia FROM
  • Każdy dodatek do obrazu źródłowego zwiększa jego rozmiar i komplikuje zarządzanie nim
  • Rozważmy aplikację wymagającą kompilacji przed uruchomieniem
    • Można dodać wszystkie niezbędne komponenty do obrazu, skompilować go, a następnie skonfigurować finalny obraz
    • Często pozostawia to zbędną zawartość w obrazie, nawet jeśli nie jest używana
FROM ubuntu
RUN apt update
RUN apt install gcc -y
...
RUN make
CMD ["data_app"]
Docker średnio zaawansowany

Kompilacje wieloetapowe

  • Kompilacje wieloetapowe wykorzystują wiele kontenerów
  • Zazwyczaj zawierają jeden lub więcej etapów budowania
  • Finalne komponenty są kopiowane do docelowego obrazu kontenera
  • Etapy budowania są następnie automatycznie usuwane
    • Oszczędzając miejsce i minimalizując rozmiar obrazu
  • Wymaga dodatkowej składni w pliku Dockerfile
    • AS <alias>
    • COPY --from=<alias>
Docker średnio zaawansowany

Przykład kompilacji wieloetapowej

# 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 średnio zaawansowany

Czas na ćwiczenia!

Docker średnio zaawansowany

Preparing Video For Download...