FROM maven:3.9-eclipse-temurin-21 AS build

WORKDIR /src

ARG JAVA_SRC_DIR
ARG CLOSURE_NAME 

# Copy pom first so Docker can cache dependencies.
COPY $JAVA_SRC_DIR/pom.xml .

RUN --mount=type=cache,target=/root/.m2 \
    mvn -B -DskipTests dependency:go-offline

COPY $JAVA_SRC_DIR/src ./src

RUN --mount=type=cache,target=/root/.m2 \
    mvn -B -DskipTests package

FROM eclipse-temurin:21-jre

WORKDIR /app

ARG JAVA_SRC_DIR
ARG CLOSURE_NAME 

RUN useradd -r -u 10001 closure

COPY --from=build /src/target/${CLOSURE_NAME}-0.1.0.jar /app/runtime.jar
COPY $JAVA_SRC_DIR/example ./example

USER closure

ENV CLOSURED_ROOT=/work
ENV CLOSURED_PORT=8080
ENV CLOSURED_WORKERS=2

EXPOSE 8080

ENTRYPOINT ["java", "-Xms256m", "-Xmx2g", "-jar", "/app/runtime.jar"]
