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 .dockerignore 0.0s => => transferring context: 2B 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 ForgeRock Download Center. -
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 bin/Custom.Dockerfile --tag my-repo/idm:7.3.0 => [internal] load build definition from Custom.Dockerfile 0.0s => => transferring dockerfile: 648B 0.0s ... => => writing image sha256:9550…5788 0.0s => => naming to my-repo/idm:7.3.0 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.3.0 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 in the ForgeOps documentation.
After you build your base images, you can push them to your Docker repository. Refer to your registry provider documentation for detailed instructions.