-
Notifications
You must be signed in to change notification settings - Fork 0
Running Mendix 8 in Docker
Mendix 8.18 is the final Mendix 8 LTS line. It is out of mainstream support, but plenty of organisations still run production MX8 apps and need to stand one up locally — for testing, debugging, CI, or a migration spike — without Studio Pro. The mendix-8 runtime crate does exactly that: bind-mount your unzipped MDA, get a working runtime, reload in seconds. The good news for MX8 specifically: the final patch (8.18.35.97) is still on the public Mendix CDN, so it builds with no special steps.
TL;DR
cd crates/mendix-8 docker build --platform linux/amd64 --build-arg MENDIX_VERSION=8.18.35.97 \ -t ontologylabs/mendix-runtime:8 . unzip your-mx8-app.mda -d ./tests/mda docker compose -f tests/docker-compose.smoke.yml up # → http://localhost:8080
-
Java 11 + the Mendix 8.18 runtime, pulled from
cdn.mendix.comat build time (never committed). Base imageeclipse-temurin:11-jre-jammy. (MX 8.18 is certified on Java 8 and 11; Java 11 is used here and runs Java-8 bytecode. Rebuild oneclipse-temurin:8-jre-jammyvia--build-argfor a Java-8-pinned app.) -
Your model bind-mounted, not baked —
docker compose restartto reload, zero dangling images. - PostgreSQL-backed, driven through the m2ee admin protocol — the same
start.shboot path as Mendix 7/9/10/11. - Model-default constants auto-supplied from the MDA's
metadata.json(MX8 does not auto-apply them otherwise).
cd crates/mendix-8
docker build --platform linux/amd64 --build-arg MENDIX_VERSION=8.18.35.97 \
-t ontologylabs/mendix-runtime:8.18.35.97 -t ontologylabs/mendix-runtime:8 .
docker run -d --name my-mx8 -p 8080:8080 -p 8090:8090 \
-v /path/to/unzipped/mda:/opt/mendix/app:ro \
-v my-mx8-data:/opt/mendix/data \
-e DATABASE_ENDPOINT="postgres://mendix:mendix@db:5432/mendix" \
-e ADMIN_PASSWORD="a-strong-password" \
-e DEVELOPMENT_MODE="true" \
ontologylabs/mendix-runtime:8.18.35.97-
It's on the CDN. Unlike what you might expect for an out-of-support major,
8.18.35.97(runtime + mxbuild) returns HTTP 200 fromcdn.mendix.com. Older MX8 patches are not all hosted (e.g.8.18.21.4259→ 404) — for those, obtain the tarball via the Mendix portal and pointRUNTIME_CDN_BASEat a local copy. See PORTAL-DOWNLOAD.md (includes agent download-instructions). - Java 11, not 8 (by default). MX 8.18 supports both; the crate defaults to 11. Override the base image for a strictly-Java-8 app.
-
Boot path is identical to MX 7/9/10/11 —
runtimelauncher.jar+ m2ee admin protocol — so the samestart.shdrives it.
A matching build crate (crates/mendix-8/build) compiles an .mpr → .mda with mxbuild in Docker — no Studio Pro. See Building Mendix apps in Docker.
The crate's recipe and its CDN source are verified (HTTP 200). A full boot-smoke against a real MX8 app (HTTP 200, as done for MX7/9/10/11) is still pending — provenance.yaml records smoke_verified: pending. Run an MX8 app on it? A fixture-row PR is welcome.
The crate scaffolding is Apache-2.0. The Mendix runtime is curled from the official CDN at build time and is never committed — it remains Mendix's IP under Mendix's terms of use.
Part of mendix-runtime-crates — the runtime layer of the mxto Mendix toolchain. The same pattern works for Mendix 7, 9, 10, and 11 — see the README.