diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..e8e21f23 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,66 @@ +FROM buildpack-deps:bullseye-scm AS source + +ARG VERSION="1.0.0" +ENV VERSION=${VERSION} + +WORKDIR /usr/src + +RUN git clone --depth 1 https://github.com/ReaJason/MemShellParty.git . && \ + rm -rf vul integration-test tools + +FROM oven/bun:1.2.2 AS frontend + +ARG ROUTE_ROOT_PATH="/" +ARG CONTEXT_PATH="" + +WORKDIR /usr/src/web + +ENV VITE_APP_API_URL=${CONTEXT_PATH} \ + VITE_APP_BASE_PATH=${ROUTE_ROOT_PATH} + +COPY --from=source /usr/src/web/package.json /usr/src/web/bun.lockb /usr/src/web/ + +RUN bun install --frozen-lockfile + +COPY --from=source /usr/src/web /usr/src/web + +RUN bun run build + +FROM eclipse-temurin:17.0.14_7-jdk-noble AS backend + +ARG VERSION="1.0.0" +ENV VERSION=${VERSION} + +WORKDIR /usr/src + +COPY --from=source /usr/src /usr/src + +COPY --from=frontend /usr/src/web/dist /usr/src/web/dist + +RUN set -ex && \ + cd web && bash copy-build.sh && \ + cd .. && ./gradlew -Pversion=${VERSION} :boot:bootjar -x test --no-daemon + +FROM eclipse-temurin:17.0.14_7-jre-noble + +LABEL authors="ReaJason" + +WORKDIR /app + +COPY --from=backend /usr/src/boot/build/libs/*.jar app.jar + +RUN groupadd -r spring && \ + useradd -r -g spring spring && \ + chown spring:spring /app/app.jar + +USER spring:spring + +ENV INTERNAL_JAVA_OPTS="\ + -Djava.security.egd=file:/dev/./urandom -Dfastison.parser.safeMode=true \ + --add-opens=java.base/java.util=ALL-UNNAMED \ + --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED \ + --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime=ALL-UNNAMED" + +EXPOSE 8080 + +ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS $INTERNAL_JAVA_OPTS -jar app.jar $BOOT_OPTS"] \ No newline at end of file diff --git a/boot/Dockerfile b/boot/Dockerfile index 4c138442..fbec18e7 100644 --- a/boot/Dockerfile +++ b/boot/Dockerfile @@ -1,19 +1,23 @@ -FROM eclipse-temurin:17-jre - -ARG VERSION=1.0.0 - -ENV VERSION=$VERSION +FROM eclipse-temurin:17.0.14_7-jre-noble LABEL authors="ReaJason" WORKDIR /app -COPY build/libs/boot-${VERSION}.jar app.jar + +COPY build/libs/*.jar app.jar + +RUN groupadd -r spring && \ + useradd -r -g spring spring && \ + chown spring:spring /app/app.jar + +USER spring:spring ENV INTERNAL_JAVA_OPTS="\ - --add-opens=java.base/java.util=ALL-UNNAMED \ - --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED \ - --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime=ALL-UNNAMED" + -Djava.security.egd=file:/dev/./urandom -Dfastison.parser.safeMode=true \ + --add-opens=java.base/java.util=ALL-UNNAMED \ + --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED \ + --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime=ALL-UNNAMED" EXPOSE 8080 -ENTRYPOINT java $JAVA_OPTS $INTERNAL_JAVA_OPTS -jar app.jar $BOOT_OPTS +ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS $INTERNAL_JAVA_OPTS -jar app.jar $BOOT_OPTS"] \ No newline at end of file