Skip to content

Commit 58045ca

Browse files
author
wlanboy
committed
Moved Folders to build stage
1 parent c449b0e commit 58045ca

File tree

3 files changed

+25
-31
lines changed

3 files changed

+25
-31
lines changed

Dockerfile

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ FROM registry.access.redhat.com/ubi9/openjdk-25:latest AS build
66

77
WORKDIR /app
88

9+
RUN mkdir -p /app/config /app/data && \
10+
touch /app/config/.keep /app/data/.keep && \
11+
chmod -R g+w /app/config /app/data
12+
913
COPY pom.xml .
1014
# → Nur die pom.xml wird kopiert, damit Maven bereits alle Dependencies auflösen kann,
1115
# ohne dass sich der Sourcecode ändert. Das verbessert das Layer-Caching.
@@ -50,18 +54,13 @@ LABEL org.opencontainers.image.title="Java http client" \
5054

5155
WORKDIR /app
5256

53-
USER root
54-
# → Temporär root, um Verzeichnisse anzulegen und Berechtigungen zu setzen.
57+
USER 185
5558

56-
RUN mkdir -p /app/config /app/data && \
57-
chown -R 185:0 /app && \
58-
chmod -R g+w /app
59-
# → /app/config: für externe Konfigurationen
60-
# → /app/data: für persistente Daten
61-
# → Non-root User für sicheren Betrieb
59+
COPY --from=build --chown=185:0 /app/config /app/config
60+
# → /app/config: für externe Konfigurationen (aus Build-Stage übernommen)
6261

63-
USER 185
64-
#Zurück zum nicht-privilegierten User.
62+
COPY --from=build --chown=185:0 /app/data /app/data
63+
#/app/data: für persistente Daten (aus Build-Stage übernommen)
6564

6665
COPY --from=build --chown=185:185 /app/extracted/dependencies/ ./
6766
# → Kopiert nur die Dependency-Layer. Ändern sich selten.
@@ -90,11 +89,6 @@ COPY --chown=185:185 entrypoint.sh /app/entrypoint.sh
9089
EXPOSE 8080
9190
# → Dokumentiert den Port, den die App verwendet (Spring Boot Default).
9291

93-
HEALTHCHECK --interval=30s --timeout=3s \
94-
CMD curl -f http://localhost:8080/actuator/health || exit 1
95-
# → Nutzt den Spring Boot Actuator Health Endpoint.
96-
# → Alternativ: wget oder ein einfacher TCP-Check
97-
9892
ENTRYPOINT ["/app/entrypoint.sh"]
9993
# → Startet die App über das Entry-Skript.
10094
# → Vorteil: Skript kann Umgebungsvariablen verarbeiten, ENTRYPOINT nicht.

Dockerfile25

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ FROM registry.access.redhat.com/ubi9/openjdk-25:latest AS build
66

77
WORKDIR /app
88

9+
RUN mkdir -p /app/config /app/data && \
10+
touch /app/config/.keep /app/data/.keep && \
11+
chmod -R g+w /app/config /app/data
12+
913
COPY pom.xml .
1014
# → Nur die pom.xml wird kopiert, damit Maven bereits alle Dependencies auflösen kann,
1115
# ohne dass sich der Sourcecode ändert. Das verbessert das Layer-Caching.
@@ -50,18 +54,13 @@ LABEL org.opencontainers.image.title="Java http client" \
5054

5155
WORKDIR /app
5256

53-
USER root
54-
# → Temporär root, um Verzeichnisse anzulegen und Berechtigungen zu setzen.
57+
USER 185
5558

56-
RUN mkdir -p /app/config /app/data && \
57-
chown -R 185:0 /app && \
58-
chmod -R g+w /app
59-
# → /app/config: für externe Konfigurationen
60-
# → /app/data: für persistente Daten
61-
# → Non-root User für sicheren Betrieb
59+
COPY --from=build --chown=185:0 /app/config /app/config
60+
# → /app/config: für externe Konfigurationen (aus Build-Stage übernommen)
6261

63-
USER 185
64-
# → Zurück zum nicht-privilegierten User.
62+
COPY --from=build --chown=185:0 /app/data /app/data
63+
# → /app/data: für persistente Daten (aus Build-Stage übernommen)
6564

6665
COPY --from=build --chown=185:185 /app/extracted/dependencies/ ./
6766
# → Kopiert nur die Dependency-Layer. Ändern sich selten.
@@ -90,11 +89,6 @@ COPY --chown=185:185 entrypoint.sh /app/entrypoint.sh
9089
EXPOSE 8080
9190
# → Dokumentiert den Port, den die App verwendet (Spring Boot Default).
9291

93-
HEALTHCHECK --interval=30s --timeout=3s \
94-
CMD curl -f http://localhost:8080/actuator/health || exit 1
95-
# → Nutzt den Spring Boot Actuator Health Endpoint.
96-
# → Alternativ: wget oder ein einfacher TCP-Check
97-
9892
ENTRYPOINT ["/app/entrypoint.sh"]
9993
# → Startet die App über das Entry-Skript.
10094
# → Vorteil: Skript kann Umgebungsvariablen verarbeiten, ENTRYPOINT nicht.

Dockerfile25Jlink

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
FROM registry.access.redhat.com/ubi9/openjdk-25:latest AS build
55
WORKDIR /app
66

7+
RUN mkdir -p /app/config /app/data && \
8+
touch /app/config/.keep /app/data/.keep && \
9+
chmod -R g+w /app/config /app/data
10+
711
# Maven Caching & Build (wie gehabt)
812
COPY pom.xml .
913
RUN --mount=type=cache,target=/root/.m2 mvn -q -DskipTests dependency:go-offline
@@ -99,6 +103,9 @@ ENV PATH="/opt/jre/bin:$PATH"
99103

100104
USER nonroot
101105

106+
COPY --from=build --chown=65532:65532 /app/config /app/config
107+
COPY --from=build --chown=65532:65532 /app/data /app/data
108+
102109
# Layer kopieren (wie gehabt)
103110
COPY --from=build --chown=65532:65532 /app/extracted/dependencies/ ./
104111
COPY --from=build --chown=65532:65532 /app/extracted/observability-dependencies/ ./
@@ -111,7 +118,6 @@ COPY --chown=65532:65532 containerconfig/application.properties /app/config/appl
111118

112119
EXPOSE 8080
113120

114-
#ENTRYPOINT ["/app/entrypoint.sh"]
115121
ENTRYPOINT [ \
116122
"/opt/jre/bin/java", \
117123
"-XX:SharedArchiveFile=/app/app.jsa", \

0 commit comments

Comments
 (0)