Companion code for "Dockerizing Spring Boot 4: Layered Jars, Buildpacks, Distroless and Image Size Benchmarks". Fat jar on JDK and JRE, layered jar on Debian, Alpine and distroless, jlink, the JDK 25 AOT cache, Paketo buildpacks and Jib, each measured for size on disk and pushed, rebuild delta, startup, user and shell. Also PID 1 and signal handling, the jdeps module gap, AOT cache mismatches and buildpacks memory calculation. Transcripts in docs/output/, regenerated by scripts/run-all.sh. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01C3TETMrqVUWeFkNtz3Jbo3
26 lines
1.3 KiB
Bash
26 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
# The buildpacks image under common container memory limits. The Paketo memory calculator runs
|
|
# before the JVM and refuses to launch if its fixed regions do not fit.
|
|
# -> docs/output/buildpacks-memory.txt
|
|
set -uo pipefail
|
|
source "$(dirname "$0")/env.sh"
|
|
run() { # label, docker args...
|
|
local label="$1"; shift
|
|
local name="bpm-$$"; docker rm -f "$name" > /dev/null 2>&1
|
|
docker run -d --name "$name" "$@" sbd/docker-images:buildpacks > /dev/null
|
|
for _ in $(seq 1 100); do
|
|
docker logs "$name" 2>&1 | grep -qE 'Started ImagesApplication|failed to launch' && break; sleep 0.1
|
|
done
|
|
echo "## $label"
|
|
docker logs "$name" 2>&1 | grep -E 'Calculated JVM Memory|unable to calculate|fixed memory regions|failed to launch|Started ImagesApplication' \
|
|
| sed -E 's/^[0-9T:.-]+Z +INFO 1 --- \[docker-images\] \[ +main\] com.ankurm.images.ImagesApplication +: //; s/\x1b\[[0-9;]*m//g' | cut -c1-230
|
|
echo "state: $(docker inspect -f '{{.State.Status}} (exit {{.State.ExitCode}})' "$name")"
|
|
echo
|
|
docker rm -f "$name" > /dev/null
|
|
}
|
|
{
|
|
run "docker run -m 512m" -m 512m
|
|
run "docker run -m 768m" -m 768m
|
|
run "docker run -m 512m -e BPL_JVM_THREAD_COUNT=50" -m 512m -e BPL_JVM_THREAD_COUNT=50
|
|
} | tee "$OUT/buildpacks-memory.txt"
|