# ======================= # Builder stage # ======================= FROM maven:3.8.5-eclipse-temurin-17 AS builder WORKDIR /workdir/server # Copy only pom.xml first for better layer caching COPY pom.xml . # Download dependencies with optimization flags RUN mvn dependency:resolve dependency:resolve-plugins -B -T 1C # Copy source code COPY src ./src # Build the application RUN mvn package -B -T 1C -DskipTests -Dmaven.javadoc.skip=true # Verify the JAR was created RUN ls -la target/ # ======================= # Runtime stage # ======================= FROM eclipse-temurin:17-jre-focal # Expose port EXPOSE 8080 # Create app and uploads directories RUN mkdir -p /app && \ mkdir -p /app/uploads && \ chmod 755 /app/uploads # Set working directory WORKDIR /app # Copy the JAR from builder stage COPY --from=builder /workdir/server/target/*.jar /app/ # Create volume for uploads (optional but recommended) VOLUME ["/app/uploads"] # Entry point: dynamically run the first JAR in /app ENTRYPOINT ["sh", "-c", "java -jar /app/$(ls /app | grep .jar | head -n1)"]