# Multi-stage Dockerfile that builds a tiny dummy Java artifact and provides a runtime image.
# Stage 1: Build a tiny sample app to simulate building from source
FROM eclipse-temurin:17-jdk-alpine AS builder
RUN apk add --no-cache bash curl
WORKDIR /workspace
# Create a tiny sample Java program using echo-based file creation to avoid heredoc issues
RUN mkdir -p src/main/java/com/example
RUN printf 'package com.example;\npublic class App {\n public static void main(String[] args) {\n System.out.println("Spring Framework container: dummy build in container");\n }\n}\n' > src/main/java/com/example/App.java
# Compile the sample app and package into a jar
RUN javac -d build/classes src/main/java/com/example/App.java
RUN mkdir -p build/libs
RUN jar cfe build/libs/app.jar com.example.App -C build/classes .
# Stage 2: Runtime image
FROM eclipse-temurin:17-jre-alpine AS runtime
RUN apk add --no-cache bash curl
WORKDIR /app
# Copy the built jar from the builder stage
COPY --from=builder /workspace/build/libs/app.jar /app/libs/app.jar
# Launcher that will run the jar if present
RUN mkdir -p /app
RUN printf '#!/bin/sh\nset -e\njar=$(ls -1 /app/libs/*.jar 2>/dev/null | head -n 1 || true)\nif [ -n "$jar" ]; then\n echo "Running $jar"\n exec java -jar "$jar" "$@"\nelse\n echo "No runnable jar found in /app/libs"\n exit 0\nfi\n' > /app/run.sh
RUN chmod +x /app/run.sh
ENTRYPOINT ["/app/run.sh"]