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"]