midPoint is the leading open source identity governance and administration platform (IGA). It is a comprehensive feature-rich system that has been continuously developed and maintained by a full-time team of professionals. midPoint is available under the terms of Apache License and European Union Public License.
This repository holds the Dockerfiles and helper scripts for building and running midPoint container images.
All midPoint images are published at Docker Hub, so you do not need to build anything to run midPoint.
Pull the image:
docker pull evolveum/midpointFor a running instance with a database in one command, use the interactive helper (it starts the published image with PostgreSQL via docker compose, and can manage named instances, logs, etc.):
./midpoint-quickstart.sh # interactive menu
./midpoint-quickstart.sh start # start non-interactivelyOr bring up the stack directly with the provided compose file:
docker compose upThe compose file runs PostgreSQL 17. A database volume created by an older version of the file (PostgreSQL 16) cannot be opened by PostgreSQL 17: either migrate it with pg_dump / pg_restore, or start over with docker compose down -v, which deletes the data.
Use build.sh to build a current midPoint image from the Dockerfiles in dockerfiles/. The image is
assembled in three stages, all built locally by the script:
-
base - OS + JDK (
dockerfiles/Dockerfile-base) -
dist - the midPoint payload from the public Nexus (
dockerfiles/Dockerfile-dist) -
final - the runnable image (
dockerfiles/Dockerfile)
The distribution tarball is fetched from the public Nexus by ./download-midpoint; no credentials are
needed. The Dockerfiles take their versions as build arguments; build them through build.sh or a preset rather than with a plain docker build.
# latest release, alpine, Java 25, non-root (midPoint 4.11+ defaults)
./build.sh
# newest development snapshot
./build.sh devel
# midPoint 4.10 and older: Java 21 and the root user
./build.sh --os ubuntu --java 21 --runtime-user root 4.10.5The parameters differ per midPoint version. The scripts in presets/ call build.sh with the same parameters the official images are built with, so you only pick the version:
./presets/build-nightly.sh # newest development snapshot (master)
./presets/build-4.11.sh # newest 4.11.Z release
./presets/build-4.11.sh 4.11.0 # a specific 4.11 release
./presets/build-4.11.sh nightly # newest 4.11 support branch snapshot
./presets/build-lts.sh # newest release of the current LTS line (4.8)
./presets/build-lts.sh nightly # newest LTS support branch snapshotAny further options are passed to build.sh and override the preset, e.g. ./presets/build-4.10.sh 4.10.5 --os rockylinux.
| Preset | midPoint | Java | OS | Runtime user | H2 demo repository |
|---|---|---|---|---|---|
|
development snapshot |
25 |
alpine |
|
no |
|
4.11 |
25 |
alpine |
|
no |
|
4.10 |
21 |
ubuntu |
|
no |
|
4.9 |
21 |
ubuntu |
|
no |
|
4.8 (LTS) |
21 |
ubuntu |
|
yes |
Common options (see ./build.sh --help for all):
| Option | Meaning | Default |
|---|---|---|
|
Release (e.g. |
|
|
Base OS family: |
|
|
Base OS image tag |
per family |
|
JDK version ( |
|
|
|
|
|
Enable the in-memory H2 demo repository (4.8 and older) |
off |
|
Reuse a prebuilt base image, skip building the base stage |
- |
|
Reuse a prebuilt dist image, skip download + building the dist stage |
- |
|
Final image name / tag |
|
Reusing a prebuilt stage speeds up repeated builds, e.g. build only the dist + final on top of a published base:
./build.sh --base-image registry.evolveum.com/public/midpoint-base:25-alpine develThe legacy/ directory holds the previous single-stage Dockerfile, the Connector Server
Dockerfile-cs, old templates and container files. It is kept for reference only and is scheduled
for removal in 2028. Do not build on it.
-
midPoint In Container docs page
-
Quick Start docs page