• # up

    Posté par (site web personnel) . En réponse au journal docker multi-stage build. Évalué à 9.

    Quelques points qui peuvent être améliorés :

    • le mkdir est inutile, WORKDIR le fait déjà
    • COPY est à préférer par rapport à ADD qui fait plein d'autres trucs. Voir https://github.com/hadolint/hadolint/wiki/DL3020 par exemple
    • on peut remplacer les targets de COPY par . dans le workdir
    • c'est plus personnel, mais j'aime bien l'entrypoint (et cmd) en tableau de string
    • je ne taggerais pas la dernière image, pour pouvoir faire un docker build sans avoir besoin de lui passer la target
    FROM maven:3.6-jdk-11 as build
    WORKDIR /jb3
    COPY pom.xml .
    COPY src .
    RUN echo "spring.data.mongodb.host=mongodb" >> /jb3/src/main/resources/config/application.properties
    RUN mvn package
    FROM adoptopenjdk/openjdk11:alpine-slim
    WORKDIR /code
    COPY --from=build /jb3/target/jb3-1.2-SNAPSHOT.jar .
    EXPOSE 8080
    ENTRYPOINT [ "java", "-jar", "jb3-1.2-SNAPSHOT.jar" ]

    Sinon les multistage builds c'est bon mangez-en !