Junior — Middle
Can you explain the concept of multi-stage image building in Docker and its advantages?
sobes.tech AI
Answer from AI
Multi-stage build in Docker allows creating images in multiple steps, using intermediate images for building and then copying only the necessary artifacts into the final image.
Advantages:
- Reducing the size of the final image — only what is needed to run is included in the final image, without build tools and temporary files.
- Enhanced security — fewer components, fewer vulnerabilities.
- Convenience and cleanliness — build and run stages can be separated without creating multiple Dockerfiles.
Example:
# Build stage
FROM maven:3.8-jdk-11 AS build
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn package
# Final image
FROM openjdk:11-jre-slim
WORKDIR /app
COPY --from=build /app/target/myapp.jar ./myapp.jar
CMD ["java", "-jar", "myapp.jar"]
Here, the application is first built using Maven, and then only the compiled jar is copied into the final image, without Maven and source files.