Some checks failed
Build and Push Docker Image / build-and-push (push) Failing after 1m35s
46 lines
1.3 KiB
Docker
46 lines
1.3 KiB
Docker
# ---- STAGE 1: Build ----
|
|
# Use an OpenJDK image that matches the version you develop with.
|
|
# It contains the JDK, but not Maven.
|
|
FROM eclipse-temurin:25-jdk-jammy AS builder
|
|
|
|
# Set the working directory
|
|
WORKDIR /app
|
|
|
|
# ---- Caching Dependencies ----
|
|
# First, copy the files that define the build, including the Maven Wrapper
|
|
COPY mvnw .
|
|
COPY .mvn .mvn
|
|
COPY pom.xml .
|
|
|
|
# Make the wrapper executable
|
|
RUN chmod +x ./mvnw
|
|
|
|
# Run a Maven command to download dependencies.
|
|
# Since pom.xml and wrapper files rarely change, this layer will be cached by Docker,
|
|
# speeding up subsequent builds significantly.
|
|
RUN ./mvnw dependency:go-offline
|
|
|
|
# ---- Building the Application ----
|
|
# Now, copy the source code. If only source code changes, the layers above are cached.
|
|
COPY src ./src
|
|
|
|
# Build the application JAR using the Maven Wrapper
|
|
RUN ./mvnw clean package -DskipTests -Djooq.codegen.skip=true -Dflyway.skip=true
|
|
|
|
|
|
# ---- STAGE 2: Runtime ----
|
|
# Use a lean Eclipse Temurin JRE image for a small and secure final container.
|
|
FROM eclipse-temurin:25-jre-jammy
|
|
|
|
# Set the working directory
|
|
WORKDIR /app
|
|
|
|
# Copy only the built JAR file from the 'builder' stage
|
|
COPY --from=builder /app/target/*.jar app.jar
|
|
|
|
# Expose the application port
|
|
EXPOSE 8080
|
|
|
|
# Command to run the application
|
|
ENTRYPOINT ["java", "-jar", "app.jar"]
|