1+ FROM buildpack-deps:bullseye-scm AS source
2+
3+ ARG VERSION="1.0.0"
4+ ENV VERSION=${VERSION}
5+
6+ WORKDIR /usr/src
7+
8+ RUN git clone --depth 1 https://github.com/ReaJason/MemShellParty.git . && \
9+ rm -rf vul integration-test tools
10+
11+ FROM oven/bun:1.2.2 AS frontend
12+
13+ ARG ROUTE_ROOT_PATH="/"
14+ ARG CONTEXT_PATH=""
15+
16+ WORKDIR /usr/src/web
17+
18+ ENV VITE_APP_API_URL=${CONTEXT_PATH} \
19+ VITE_APP_BASE_PATH=${ROUTE_ROOT_PATH}
20+
21+ COPY --from=source /usr/src/web/package.json /usr/src/web/bun.lockb /usr/src/web/
22+
23+ RUN bun install --frozen-lockfile
24+
25+ COPY --from=source /usr/src/web /usr/src/web
26+
27+ RUN bun run build
28+
29+ FROM eclipse-temurin:17.0.14_7-jdk-noble AS backend
30+
31+ ARG VERSION="1.0.0"
32+ ENV VERSION=${VERSION}
33+
34+ WORKDIR /usr/src
35+
36+ COPY --from=source /usr/src /usr/src
37+
38+ COPY --from=frontend /usr/src/web/dist /usr/src/web/dist
39+
40+ RUN set -ex && \
41+ cd web && bash copy-build.sh && \
42+ cd .. && ./gradlew -Pversion=${VERSION} :boot:bootjar -x test --no-daemon
43+
44+ FROM eclipse-temurin:17.0.14_7-jre-noble
45+
46+ LABEL authors=
"ReaJason<[email protected] >" 47+
48+ WORKDIR /app
49+
50+ COPY --from=backend /usr/src/boot/build/libs/*.jar app.jar
51+
52+ RUN groupadd -r spring && \
53+ useradd -r -g spring spring && \
54+ chown spring:spring /app/app.jar
55+
56+ USER spring:spring
57+
58+ ENV INTERNAL_JAVA_OPTS="\
59+ -Djava.security.egd=file:/dev/./urandom -Dfastison.parser.safeMode=true \
60+ --add-opens=java.base/java.util=ALL-UNNAMED \
61+ --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED \
62+ --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime=ALL-UNNAMED"
63+
64+ EXPOSE 8080
65+
66+ ENTRYPOINT ["sh" , "-c" , "java $JAVA_OPTS $INTERNAL_JAVA_OPTS -jar app.jar $BOOT_OPTS" ]
0 commit comments