Junior — Middle
Meg tudná magyarázni a Docker többlépcsős építésének működési elvét, és hogy miért alkalmazzák?
sobes.tech MI
Válasz az MI-től
A több szakaszos építés (multi-stage build) a Dockerben lehetővé teszi, hogy több lépésben hozzunk létre képeket, ami segít csökkenteni a végső kép méretét és növeli a biztonságot.
Az ötlet az, hogy az első lépésekben az alkalmazás minden szükséges eszközzel és függőséggel felépül és fordul, majd az utolsó lépésben csak azok a fájlok kerülnek át másolásra, amelyek a futtatáshoz szükségesek egy minimális alapképre.
Előnyök:
- A build eszközök kizárásával a végső kép méretének csökkentése.
- Növelt biztonság, mivel a végső képen nincsenek felesleges eszközök.
- A Dockerfile egyszerűsítése, mivel minden lépés egy fájlban van leírva.
Példa:
# Építési szakasz
FROM openjdk:17-jdk AS build
WORKDIR /app
COPY . .
RUN ./gradlew build
# Futási szakasz
FROM openjdk:17-jre
WORKDIR /app
COPY --from=build /app/build/libs/myapp.jar ./
CMD ["java", "-jar", "myapp.jar"]
Itt először az alkalmazás JDK-val épül, majd a minimális JRE képen csak a kész jar fájl kerül másolásra.