Sobes.tech
Junior — Middle

W jakich przypadkach zaleca się stosowanie wieloetapowego budowania Docker i jak to pomaga zoptymalizować proces?

sobes.tech AI

Odpowiedź od AI

Zaleca się wieloetapowe budowanie Docker, gdy konieczne jest utworzenie kompaktowego i zoptymalizowanego obrazu, oddzielając etapy budowania i uruchamiania aplikacji. Na przykład, w pierwszym etapie aplikacja jest budowana przy użyciu wszystkich niezbędnych narzędzi i zależności, a w drugim tworzony jest minimalny obraz, do którego kopiowane są tylko skompilowane artefakty.

To pomaga:

  • zmniejszyć rozmiar końcowego obrazu, wykluczając niepotrzebne pliki i narzędzia do budowania;
  • zwiększyć bezpieczeństwo, ponieważ w końcowym obrazie nie ma narzędzi deweloperskich;
  • przyspieszyć wdrożenie i uruchomienie kontenerów.

Przykład Dockerfile z wieloetapowym budowaniem:

# Etap budowania
FROM maven:3.8-jdk-11 AS builder
WORKDIR /app
COPY . .
RUN mvn clean package

# Etap uruchomienia
FROM openjdk:11-jre-slim
WORKDIR /app
COPY --from=builder /app/target/myapp.jar ./
CMD ["java", "-jar", "myapp.jar"]