Skip to content

Commit 2758b20

Browse files
author
emre.akkaya
committed
fix: Resolve any missing shared library bug in the final image & switch to jetty to have a smaller footprint
1 parent 9efae74 commit 2758b20

2 files changed

Lines changed: 29 additions & 3 deletions

File tree

Dockerfile

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,22 @@ RUN set -eux; \
3434
deps="$(jdeps --ignore-missing-deps --multi-release ${JAVA_VERSION} \
3535
--print-module-deps app.jar)"; \
3636
jlink --strip-debug --no-man-pages --no-header-files --compress=2 \
37-
--add-modules "${deps},jdk.unsupported" \
38-
--output /opt/jre
37+
--add-modules "${deps},jdk.unsupported,java.desktop,java.management,java.logging,java.naming,java.instrument,jdk.crypto.ec" \
38+
--output /opt/jre; \
39+
mkdir -p /opt/runtime-libs; \
40+
for bin in /opt/jre/bin/java /opt/jre/lib/server/libjvm.so; do \
41+
ldd "$bin" \
42+
| awk '/=>/ {print $3} /^[[:space:]]*\// {print $1}'; \
43+
done \
44+
| sort -u \
45+
| xargs -r -I{} cp -L --parents {} /opt/runtime-libs
3946

4047
# Prepare the entrypoint script that will run inside the scratch image
4148
RUN mkdir -p /opt/config-server \
4249
&& cat <<'EOF' > /opt/config-server/entrypoint.sh
4350
#!/bin/sh
4451
set -e
45-
exec /opt/jre/bin/java -Djava.security.egd=file:/dev/./urandom $JAVA_OPTS -jar /opt/config-server/app.jar
52+
exec /opt/jre/bin/java -Djava.security.egd=file:/dev/./urandom -Djava.io.tmpdir=/tmp $JAVA_OPTS -jar /opt/config-server/app.jar
4653
EOF
4754
RUN chmod +x /opt/config-server/entrypoint.sh
4855

@@ -52,6 +59,7 @@ FROM scratch AS runtime
5259

5360
ENV JAVA_HOME=/opt/jre
5461
ENV JAVA_OPTS=""
62+
ENV HOME=/home/config
5563
ENV SERVER_PORT=8888
5664
ENV SPRING_PROFILES_ACTIVE=git
5765
ENV CONFIG_GIT_URI=https://github.com/spring-cloud-samples/config-repo
@@ -61,10 +69,18 @@ WORKDIR /opt/config-server
6169

6270
COPY --from=shell /bin/sh /bin/sh
6371
COPY --from=shell /bin/busybox /bin/busybox
72+
COPY --from=shell /tmp /tmp
73+
74+
RUN /bin/busybox chown 1001:1001 /tmp \
75+
&& /bin/busybox chmod 1777 /tmp
76+
77+
RUN /bin/busybox mkdir -p /home/config/.config/jgit \
78+
&& /bin/busybox chown -R 1001:1001 /home/config
6479

6580
COPY --from=jre-build /etc/passwd /etc/passwd
6681
COPY --from=jre-build /etc/group /etc/group
6782
COPY --from=jre-build /opt/jre /opt/jre
83+
COPY --from=jre-build /opt/runtime-libs/ /
6884
COPY --from=jre-build /opt/config-server/entrypoint.sh /opt/config-server/entrypoint.sh
6985
COPY --from=build /workspace/app/target/config-server.jar /opt/config-server/app.jar
7086

pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,16 @@
2626
<dependency>
2727
<groupId>org.springframework.cloud</groupId>
2828
<artifactId>spring-cloud-config-server</artifactId>
29+
<exclusions>
30+
<exclusion>
31+
<groupId>org.springframework.boot</groupId>
32+
<artifactId>spring-boot-starter-tomcat</artifactId>
33+
</exclusion>
34+
</exclusions>
35+
</dependency>
36+
<dependency>
37+
<groupId>org.springframework.boot</groupId>
38+
<artifactId>spring-boot-starter-jetty</artifactId>
2939
</dependency>
3040
<dependency>
3141
<groupId>org.springframework.boot</groupId>

0 commit comments

Comments
 (0)