|
| 1 | +# syntax=docker/dockerfile:1-labs |
1 | 2 | # Stage 1: Build the dummy app |
2 | 3 | ARG JAVA_VERSION=21 |
3 | 4 | FROM eclipse-temurin:$JAVA_VERSION-jdk-alpine AS build-env |
4 | 5 |
|
5 | 6 | RUN apk add --no-cache git bash |
6 | 7 |
|
7 | | -# Create non root user |
8 | | -ARG userName=limitedbuild |
9 | | -ARG groupName=limitedbuild |
10 | | -ARG userId=1000 |
11 | | - |
12 | | -RUN addgroup --system ${groupName} \ |
13 | | - && adduser --uid ${userId} --system --disabled-password --shell /bin/bash ${userName} \ |
14 | | - && adduser ${userName} ${groupName} |
15 | | - |
16 | | -# Create build dir |
17 | | -RUN mkdir /build \ |
18 | | - && chown ${userName}:${groupName} /build |
19 | 8 | WORKDIR /build |
20 | 9 |
|
21 | | -USER ${userName} |
22 | | - |
23 | | -# Copying context is prepared by Testcontainers |
24 | | -COPY --chown=${userName}:${groupName} . ./ |
25 | | - |
26 | | -# RUN chmod +x ./mvnw |
27 | | -ARG mvncmd='clean package -pl "testcontainers-advanced-imagebuilder-dummy-app" -am -T2C -Dmaven.test.skip' |
28 | | - |
29 | | -RUN echo "Executing '$mvncmd'" |
30 | | -RUN chmod +x ./mvnw \ |
31 | | - && ./mvnw -B ${mvncmd} |
| 10 | +# Copy & Cache wrapper |
| 11 | +COPY --parents mvnw .mvn/** ./ |
| 12 | +RUN ./mvnw --version |
| 13 | + |
| 14 | +# Copy & Cache poms/dependencies |
| 15 | +COPY --parents **/pom.xml ./ |
| 16 | +# Resolve jars so that they can be cached and don't need to be downloaded when a Java file changes |
| 17 | +ARG MAVEN_GO_OFFLINE_COMMAND='./mvnw -B dependency:go-offline -pl "testcontainers-advanced-imagebuilder-dummy-app" -am -DincludeScope=runtime -T2C' |
| 18 | +RUN echo "Executing '$MAVEN_GO_OFFLINE_COMMAND'" |
| 19 | +RUN ${MAVEN_GO_OFFLINE_COMMAND} |
| 20 | + |
| 21 | +# Copying all other files |
| 22 | +COPY . ./ |
| 23 | + |
| 24 | +# A valid Git repo is required for the build |
| 25 | +RUN git config --global user.email "[email protected]" \ |
| 26 | + && git config --global user.name "Dynamic Build" \ |
| 27 | + && git init --initial-branch=dynamically-built-tcst \ |
| 28 | + && git add . \ |
| 29 | + && git commit -m "Init commit" |
| 30 | + |
| 31 | +ARG MAVEN_BUILD_COMMAND='./mvnw -B clean package -pl "testcontainers-advanced-imagebuilder-dummy-app" -am -T2C -Dmaven.test.skip' |
| 32 | +RUN echo "Executing '$MAVEN_BUILD_COMMAND'" |
| 33 | +RUN ${MAVEN_BUILD_COMMAND} |
32 | 34 |
|
33 | 35 | # Stage 2: Build the executable image |
34 | 36 | FROM eclipse-temurin:21-jre-alpine |
|
0 commit comments