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 JS_SRC_DIR 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 $JS_SRC_DIR ./src USER closure ENV CLOSURED_ROOT=/app/src ENV CLOSURED_PORT=8080 ENV CLOSURED_WORKERS=2 EXPOSE 8080 ENTRYPOINT ["java", "-Xms256m", "-Xmx2g", "-jar", "/app/runtime.jar"]