homepage/Dockerfile

35 lines
985 B
Docker

# --- Stage 1: Build the JAR ---
FROM gradle:9.2.1-jdk21 AS build
# Set working dir
WORKDIR /app
# Copy Gradle files first (for caching)
COPY --chown=gradle:gradle build.gradle.kts settings.gradle.kts gradle.properties gradlew ./
COPY --chown=gradle:gradle gradle ./gradle
# Copy source code
COPY --chown=gradle:gradle src ./src
# Copy pre-generated code fragments
COPY --chown=gradle:gradle build/generated-src ./build/generated-src
COPY --chown=gradle:gradle build/generated-resources ./build/generated-resources
# Build the fat jar without cleaning (preserves generated code)
RUN ./gradlew build -x clean -x cleanGenerated -x jooqCodegen -x flywayMigrate -x precompileJte --no-daemon
# --- Stage 2: Run the app ---
FROM eclipse-temurin:21-jdk-alpine
ARG PORT=9000
WORKDIR /app
# Copy the built JAR from the build stage
COPY --from=build /app/build/libs/*.jar app.jar
# Expose port (same as your server)
EXPOSE ${PORT}
# Run the app
ENTRYPOINT ["java", "-jar", "app.jar"]