Skip to content

Commit 4a3f06c

Browse files
committed
[refactor] Improve Docker container build args
1 parent 0191477 commit 4a3f06c

File tree

2 files changed

+53
-13
lines changed

2 files changed

+53
-13
lines changed

exist-docker/src/main/resources-filtered/Dockerfile

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,22 @@
1919
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
2020
#
2121

22+
### START: Container build time args for Elemental Server
23+
##
24+
# Elemental data cache size
25+
ARG ELEMENTAL_SERVER_CACHE_MEM="256"
26+
# Elemental maximum number of database brokers
27+
ARG ELEMENTAL_SERVER_MAX_BROKER="20"
28+
##
29+
### END: Container build time args for Elemental Server
30+
31+
### START: Container build time args for JVM (Java Virtual Machine)
32+
##
33+
# JVM maximum RAM use (as a percentage of RAM available to the Docker Container)
34+
ARG JVM_MAX_RAM_PERCENTAGE="75.0"
35+
##
36+
### END: Container build time args for JVM (Java Virtual Machine)
37+
2238
# Install latest JRE 21 in Chainguard Wolfi temporary builder image
2339
FROM cgr.dev/chainguard/wolfi-base AS builder
2440

@@ -30,9 +46,15 @@ RUN apk add ca-certificates java-cacerts
3046
# Install latest JRE
3147
RUN apk add openjdk-21-jre
3248

49+
3350
# Use Chainguard distroless glibc base for dynamically linked libraries
3451
FROM cgr.dev/chainguard/glibc-dynamic:latest
3552

53+
# Inherit global args to this build stage
54+
ARG ELEMENTAL_SERVER_CACHE_MEM
55+
ARG ELEMENTAL_SERVER_MAX_BROKER
56+
ARG JVM_MAX_RAM_PERCENTAGE
57+
3658
# Copy over dependencies for updated JRE from Wolfi
3759
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo
3860
COPY --from=builder /lib/libz.so.1 /lib/libz.so.1
@@ -88,18 +110,13 @@ LABEL org.label-schema.build-date=${maven.build.timestamp} \
88110

89111
EXPOSE 8080 8443
90112

91-
# make CACHE_MEM, MAX_BROKER, and JVM_MAX_RAM_PERCENTAGE available to users
92-
ARG CACHE_MEM
93-
ARG MAX_BROKER
94-
ARG JVM_MAX_RAM_PERCENTAGE
95-
96113
ENV ELEMENTAL_HOME="/elemental"
97114
ENV EXIST_HOME="/elemental"
98115
ENV CLASSPATH="/elemental/lib/${elemental.uber.jar.filename}"
99116

100117
ENV JAVA_HOME="/usr/lib/jvm/java-21-openjdk"
101118

102-
ENV JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF-8 -Djava.awt.headless=true -Dorg.exist.db-connection.cacheSize=${CACHE_MEM:-256}M -Dorg.exist.db-connection.pool.max=${MAX_BROKER:-20} -Dlog4j.configurationFile=/elemental/etc/log4j2.xml -Dexist.home=/elemental -Dexist.configurationFile=/elemental/etc/conf.xml -Djetty.home=/elemental -Dexist.jetty.config=/elemental/etc/jetty/standard.enabled-jetty-configs -XX:+UseNUMA -XX:+UseZGC -XX:+UseContainerSupport -XX:MaxRAMPercentage=${JVM_MAX_RAM_PERCENTAGE:-75.0} -XX:+ExitOnOutOfMemoryError"
119+
ENV JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF-8 -Djava.awt.headless=true -Dorg.exist.db-connection.cacheSize=${ELEMENTAL_SERVER_CACHE_MEM}M -Dorg.exist.db-connection.pool.max=${ELEMENTAL_SERVER_MAX_BROKER} -Dlog4j.configurationFile=/elemental/etc/log4j2.xml -Dexist.home=/elemental -Dexist.configurationFile=/elemental/etc/conf.xml -Djetty.home=/elemental -Dexist.jetty.config=/elemental/etc/jetty/standard.enabled-jetty-configs -XX:+UseNUMA -XX:+UseZGC -XX:+UseContainerSupport -XX:MaxRAMPercentage=${JVM_MAX_RAM_PERCENTAGE} -XX:+ExitOnOutOfMemoryError"
103120

104121
ENV PATH="/usr/lib/jvm/java-21-openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
105122

exist-docker/src/main/resources-filtered/Dockerfile-DEBUG

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,38 @@
1919
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
2020
#
2121

22+
### START: Container build time args for Elemental Server
23+
##
24+
# Elemental data cache size
25+
ARG ELEMENTAL_SERVER_CACHE_MEM="256"
26+
# Elemental maximum number of database brokers
27+
ARG ELEMENTAL_SERVER_MAX_BROKER="20"
28+
##
29+
### END: Container build time args for Elemental Server
30+
31+
### START: Container build time args for JVM (Java Virtual Machine)
32+
##
33+
# JVM maximum RAM use (as a percentage of RAM available to the Docker Container)
34+
ARG JVM_MAX_RAM_PERCENTAGE="75.0"
35+
36+
# JVM debugging protocol, suspend process on startup (y = Yes, n = No)
37+
ARG JVM_JDWP_SUSPEND="n"
38+
# JVM debugging protocol address and/or port
39+
ARG JVM_JDWP_ADDRESS="5005"
40+
##
41+
### END: Container build time args for JVM (Java Virtual Machine)
42+
43+
2244
# Use Chainguard Wolfi
2345
FROM cgr.dev/chainguard/wolfi-base
2446

47+
# Inherit global args to this build stage
48+
ARG ELEMENTAL_SERVER_CACHE_MEM
49+
ARG ELEMENTAL_SERVER_MAX_BROKER
50+
ARG JVM_MAX_RAM_PERCENTAGE
51+
ARG JVM_JDWP_SUSPEND
52+
ARG JVM_JDWP_ADDRESS
53+
2554
RUN apk update && apk upgrade
2655
# Install dependencies needed for JDK
2756
RUN apk add tzdata zlib libjpeg-turbo libpng lcms2 freetype ttf-dejavu fontconfig-config libfontconfig1 expat libuuid libbrotlicommon1 libbrotlidec1 libbrotlienc1 libcrypt1
@@ -54,19 +83,13 @@ LABEL org.label-schema.build-date=${maven.build.timestamp} \
5483

5584
EXPOSE 8080 8443 5005
5685

57-
# make CACHE_MEM, MAX_BROKER, JVM_MAX_RAM_PERCENTAGE, and JVM_JDWP_SUSPEND available to users at build time
58-
ARG CACHE_MEM
59-
ARG MAX_BROKER
60-
ARG JVM_MAX_RAM_PERCENTAGE
61-
ARG JVM_JDWP_SUSPEND
62-
6386
ENV ELEMENTAL_HOME="/elemental"
6487
ENV EXIST_HOME="/elemental"
6588
ENV CLASSPATH="/elemental/lib/${elemental.uber.jar.filename}"
6689

6790
ENV JAVA_HOME="/usr/lib/jvm/java-21-openjdk"
6891

69-
ENV JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF-8 -Djava.awt.headless=true -Dorg.exist.db-connection.cacheSize=${CACHE_MEM:-256}M -Dorg.exist.db-connection.pool.max=${MAX_BROKER:-20} -Dlog4j.configurationFile=/elemental/etc/log4j2.xml -Dexist.home=/elemental -Dexist.configurationFile=/elemental/etc/conf.xml -Djetty.home=/elemental -Dexist.jetty.config=/elemental/etc/jetty/standard.enabled-jetty-configs -XX:+UseNUMA -XX:+UseZGC -XX:+UseContainerSupport -XX:MaxRAMPercentage=${JVM_MAX_RAM_PERCENTAGE:-75.0} -XX:+ExitOnOutOfMemoryError -agentlib:jdwp=transport=dt_socket,server=y,suspend=${JVM_JDWP_SUSPEND:-n},address=5005"
92+
ENV JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF-8 -Djava.awt.headless=true -Dorg.exist.db-connection.cacheSize=${ELEMENTAL_SERVER_CACHE_MEM}M -Dorg.exist.db-connection.pool.max=${ELEMENTAL_SERVER_MAX_BROKER} -Dlog4j.configurationFile=/elemental/etc/log4j2.xml -Dexist.home=/elemental -Dexist.configurationFile=/elemental/etc/conf.xml -Djetty.home=/elemental -Dexist.jetty.config=/elemental/etc/jetty/standard.enabled-jetty-configs -XX:+UseNUMA -XX:+UseZGC -XX:+UseContainerSupport -XX:MaxRAMPercentage=${JVM_MAX_RAM_PERCENTAGE} -XX:+ExitOnOutOfMemoryError -agentlib:jdwp=transport=dt_socket,server=y,suspend=${JVM_JDWP_SUSPEND},address=${JVM_JDWP_ADDRESS}"
7093

7194
ENV PATH="/usr/lib/jvm/java-21-openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
7295

0 commit comments

Comments
 (0)