Sobes.tech
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.