-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile2StageBuild
29 lines (23 loc) · 1.12 KB
/
Dockerfile2StageBuild
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
##### Stage 1 - Lets build the "deployable package"
FROM maven:3.6.1-jdk-8-alpine as hello-world-builder
WORKDIR /hello-world
### Step 1 - Copy pom.xml and download project dependencies
# Dividing copy into two steps to ensure that we download dependencies
# only when pom.xml changes
COPY pom.xml .
# dependency:go-offline - Goal that resolves all project dependencies,
# including plugins and reports and their dependencies. -B -> Batch mode
RUN mvn dependency:go-offline -B
### Step 2 - Copy source and build "deployable package"
COPY src src
RUN mvn install -DskipTests
# Unzip
RUN mkdir -p target/dependency && (cd target/dependency; jar -xf ../*.jar)
##### Stage 2 - Let's build a minimal image with the "deployable package"
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG DEPENDENCY=/hello-world/target/dependency
COPY --from=hello-world-builder ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY --from=hello-world-builder ${DEPENDENCY}/META-INF /app/META-INF
COPY --from=hello-world-builder ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-cp","app:app/lib/*","com.learn.rest.webservices.restfulwebservices.RestfulWebServicesApplication"]