Skip to main content

Build & Publish a Maven Docker Image

Prerequisites

Create a Dockerfile

Create a Dockerfile in your project root:

# ---- Build stage ----
FROM eclipse-temurin:21-jdk AS build
WORKDIR /app

# For Maven:
COPY mvnw pom.xml ./
COPY .mvn .mvn
RUN ./mvnw -q -B dependency:go-offline

# Copy sources and build
COPY src src
RUN ./mvnw -q -DskipTests package

# ---- Runtime stage ----
FROM eclipse-temurin:21-jre
WORKDIR /app

# Optional JVM flags (adjust as needed)
ENV JAVA_OPTS=""

# Copy the fat/uber JAR from the build stage
# For Maven (default target/*.jar). For Gradle, see comment below.
COPY --from=build /app/target/*.jar /app/app.jar
# Gradle alternative:
# COPY --from=build /app/build/libs/*-all.jar /app/app.jar
# or if not using shadow/all-jar:
# COPY --from=build /app/build/libs/*.jar /app/app.jar

EXPOSE 8080
ENTRYPOINT ["sh","-c","java $JAVA_OPTS -jar /app/app.jar"]