Production-oriented container images for the Galaxio team.
Minimal distroless base image:
- runs as
nonroot - no shell, package manager, or debugging tools
- intended as a safe parent for production images
Build:
docker build -f Dockerfile -t galaxioteam/base:local .Hardened Java 21 JDK image on top of the distroless base:
- full JDK copied from Eclipse Temurin
- non-root by default
- UTF-8 defaults baked in
Build:
docker build -f java.Dockerfile -t galaxioteam/java:local .Builder image for Scala Gatling projects:
- based on
sbtscala/scala-sbt - warms
sbtand Coursier caches - installs
galaxio-cli - warms dependencies by rendering
gatling/scala-sbtfrom the Galaxio template registry - keeps
gatling-picatinnyin the generated warmup project - keeps shell tooling because it is a CI/builder image, not a production runtime
Build:
docker build -f gatling-sbt-builder.Dockerfile -t galaxioteam/gatling-sbt-builder:local .| Argument | Default | Description |
|---|---|---|
GALAXIO_CLI_VERSION |
0.6.1 |
Version of galaxio-cli to download. |
GALAXIO_CLI_CHECKSUM |
(see Dockerfile) | SHA256 checksum of the galaxio-cli release tarball. Used to verify the download before extraction. |
GALAXIO_CLI_CHECKSUM — how to find and use it:
- Open the release page for the target version:
https://github.com/galax-io/galaxio-cli/releases/tag/v<VERSION> - Download
checksums.txtfrom the release assets and locate the line forgalaxio_<VERSION>_linux_amd64.tar.gz. - Pass the hash at build time:
docker build \
--build-arg GALAXIO_CLI_VERSION=0.6.1 \
--build-arg GALAXIO_CLI_CHECKSUM=711075adfa5bd7fc188326ee4200177cfd13d997082ecc27b304e405ae035fea \
-f gatling-sbt-builder.Dockerfile \
-t galaxioteam/gatling-sbt-builder:local .If GALAXIO_CLI_CHECKSUM does not match the downloaded file, the build will
fail at the sha256sum -c step before any binary is extracted.
Builder image for Gatling Maven projects:
- based on official Maven + Temurin
- warms the local
.m2repository with Gatling 3.13 dependencies - intended for Java/Kotlin/Scala Maven projects
Build:
docker build -f gatling-maven-builder.Dockerfile -t galaxioteam/gatling-maven-builder:local .Builder image for Gatling Gradle projects:
- based on official Gradle + JDK 21
- warms the Gradle cache with Gatling 3.13 dependencies
- intended for Java/Kotlin/Scala Gradle projects
Build:
docker build -f gatling-gradle-builder.Dockerfile -t galaxioteam/gatling-gradle-builder:local .Hardened Gatling 3.13 runtime image:
- distroless final image
- non-root user
- offline Maven cache warmed at build time
- tiny BusyBox userspace instead of a full Debian/Ubuntu userspace
Why not fully distroless-only?
Gatling 3.13.x ships as a Maven-wrapper-based bundle. Running the official bundle requires a shell and a few POSIX utilities because mvnw is a shell script. The runtime image therefore uses:
- tiny BusyBox userspace instead of a full Debian/Ubuntu userspace
Build runtime:
docker build -f gatling-runtime.Dockerfile -t galaxioteam/gatling-runtime:local .Debug-friendly Gatling 3.13 image:
- shell, git, jq, curl, netcat, procps
- meant only for troubleshooting and ad-hoc inspection
Build:
docker build -f gatling-debug.Dockerfile -t galaxioteam/gatling-debug:local .Run bundled sample simulation:
docker run --rm galaxioteam/gatling-runtime:localOverride the Maven/Gatling goal:
docker run --rm galaxioteam/gatling-runtime:local test gatling:test -Dgatling.simulationClass=computerdatabase.BasicSimulationFor production and CI usage, prefer the following split:
- Use
gatling-sbt-builder,gatling-maven-builder, andgatling-gradle-builderonly as builder images. - Use
gatling-runtimeas the smallest safe image when you need the official 3.13 bundle workflow. - Use
gatling-debugonly for troubleshooting. - Run containers with:
- read-only root filesystem
- dropped Linux capabilities
allowPrivilegeEscalation=falseseccomp=RuntimeDefault
- Pin upstream base images by digest in CI/CD before publishing to production registries.
- removed
apt-get upgradefrom image builds - stopped copying a near-complete Ubuntu userspace into a distroless image
- made the base image truly minimal
- made Java runtime images non-root by default
- split Gatling images by builder tool:
sbt,maven,gradle - separated production and debug concerns
- switched sbt warmup from
g8togalaxio-cli - updated Picatinny in sbt warmup to the latest verified version
- fixed
SBT_OPTShandling in the sbt builder
Docker Hub: galaxioteam
| Image | Tag | Size |
|---|---|---|
galaxio-cli |
0.3.4 |
N/A |
base-jdk |
17-0.3.4 |
N/A |
base-jdk |
21-0.3.4 |
N/A |
gatling-sbt-builder |
17-0.3.4 |
N/A |
gatling-sbt-builder |
21-0.3.4 |
N/A |
gatling-maven-builder |
17-0.3.4 |
N/A |
gatling-maven-builder |
21-0.3.4 |
N/A |
gatling-gradle-builder |
17-0.3.4 |
N/A |
gatling-gradle-builder |
21-0.3.4 |
N/A |
gatling-sbt-runtime |
17-0.3.4 |
N/A |
gatling-sbt-runtime |
21-0.3.4 |
N/A |
gatling-maven-runtime |
17-0.3.4 |
N/A |
gatling-maven-runtime |
21-0.3.4 |
N/A |
gatling-gradle-runtime |
17-0.3.4 |
N/A |
gatling-gradle-runtime |
21-0.3.4 |
N/A |
gatling-sbt-debug |
17-0.3.4 |
N/A |
gatling-sbt-debug |
21-0.3.4 |
N/A |
gatling-maven-debug |
17-0.3.4 |
N/A |
gatling-maven-debug |
21-0.3.4 |
N/A |
gatling-gradle-debug |
17-0.3.4 |
N/A |
gatling-gradle-debug |
21-0.3.4 |
N/A |