Skip to content

Instantly share code, notes, and snippets.

@vanduc1102
Last active April 10, 2019 04:11
Show Gist options
  • Save vanduc1102/a78ddc4b88f0bc8e07ab3637c1470841 to your computer and use it in GitHub Desktop.
Save vanduc1102/a78ddc4b88f0bc8e07ab3637c1470841 to your computer and use it in GitHub Desktop.
Dockerfile for Java Spring boot project
# our base build image
FROM maven:3.6-jdk-8-alpine as maven
# copy the project files
COPY ./pom.xml ./pom.xml
# build all dependencies
RUN mvn dependency:go-offline -B
# copy your other files
COPY ./src ./src
# build for release
RUN mvn package
# our final base image
FROM openjdk:8-jre-alpine
# set deployment directory
WORKDIR /workspace
# copy over the built artifact from the maven image
COPY --from=maven target/testing-framework-be*.jar ./app.jar
EXPOSE 8080
CMD ["java", "-jar", "app.jar"]
# Our base build image
FROM maven:3-jdk-8-alpine as builder
LABEL maintainer DUC NGUYEN <[email protected]>
WORKDIR /workspace/app
COPY pom.xml .
RUN mvn dependency:go-offline -B
COPY src src
RUN mvn clean package
RUN mkdir -p target/dependency && (cd target/dependency; jar -xf ../*.jar)
# Our final base image
FROM openjdk:8-jre-alpine
ARG DEPENDENCY=/workspace/app/target/dependency
ARG APP_CLASS="your.package.example.Application"
COPY --from=builder ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY --from=builder ${DEPENDENCY}/META-INF /app/META-INF
COPY --from=builder ${DEPENDENCY}/BOOT-INF/classes /app
EXPOSE 8080
ENTRYPOINT ["java","-cp","app:app/lib/*", ${APP_CLASS}]
@vanduc1102
Copy link
Author

vanduc1102 commented Apr 6, 2019

docker build -t some-tags .
  • Maven will download the world on first build ( slow )
  • Change java code , rerun build command -> code will rebuild ( fast )
  • Change pom.xml file , Maven will download the whole-world again :sad_dog: ( slow )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment