Manage configuration with Docker
Docker is a set of products that allows you to run IDM instances in containers. A container is a software package that can be virtualized. Containerization is one way to use a file-based configuration strategy to manage IDM clusters in a repeatable and reliable way.
You can download Docker from the official Docker homepage.
Build a base image
After you have downloaded and installed Docker, you must build a base image for IDM. ForgeRock supplies a Custom.Dockerfile, which contains our expected structure. To build a base image with it, do the following:
-
As a prerequisite, you must build the
java-17base image:-
Clone the
https://github.com/ForgeRock/forgeops-extras.gitrepository. -
Build the
java-17base image from theforgeops-extras/images/java-17directory:cd /path/to/forgeops-extras/images/java-17 docker build --tag my-repo/java-17 . => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 2.38kB 0.0s ... => => writing image sha256:7674…f7f5 0.0s => => naming to docker.io/my-repo/java-17 0.0s
-
-
Build the base image for IDM:
-
Download the latest version of the IDM
.zipfile from the Backstage download site. -
Unzip the IDM
.zipfile. -
Edit the
Custom.Dockerfilein theopenidm/bindirectory. Change the line:FROM gcr.io/forgerock-io/java-17:latest
to:
FROM my-repo/java-17 -
Build the
IDMbase image from theopenidm/bindirectory:cd /path/to/openidm/bin docker build . --file Custom.Dockerfile --tag my-repo/idm:7.5.2 => [internal] load build definition from Custom.Dockerfile 0.0s => => transferring dockerfile: 648B 0.0s ... => => writing image sha256:9550…5788 0.0s => => naming to docker.io/my-repo/idm:7.5.2 0.0s
-
-
Run the
docker imagescommand to verify that you built the base images:docker images | grep my-repo REPOSITORY TAG IMAGE ID CREATED SIZE my-repo/idm 7.5.2 0cc1b7f70ce6 1 hour ago 387MB my-repo/java-17 latest 76742b285ddf 1 hour ago 146MB
If you use IDM as part of a platform deployment, refer to Base Docker images.
After you build your base images, you can push them to your Docker repository. Refer to your registry provider documentation for detailed instructions.