Deploying Eggplant IAM with Docker
This page describes how to deploy Keycloak in a Docker container. Before proceeding with the steps on this page, be sure to complete the pre-deployment steps for Windows or Linux.
Prepare environment
You can copy the command examples in this document by hovering over the right-side of the example to display a Copy button and then clicking it.
-
Ensure that your TLS certificate and key are saved in
pem
format in separate files. -
Create a file called
.env
in the same folder as the Docker Compose file with the content below, updating the values to suit your installation:KC_ADMIN_USER=admin
KC_ADMIN_PASSWORD=securepassword
KEYCLOAK_URL=https://iam.example.com
REALM_INSTALLER_CLIENT_SECRET=realm_installer_client_secret
INITIAL_USER_USERNAME=username
INITIAL_USER_PASSWORD=securepassword
INITIAL_USER_GIVEN_NAME=given_name
INITIAL_USER_FAMILY_NAME=family_name
INITIAL_USER_EMAIL=email_address
TLS_CERT=/path/to/tls.crt
TLS_KEY=/path/to/tls.key -
If you would like to use an external PostgreSQL database then add the following to the file, updating the values for your installation:
POSTGRES_HOSTNAME=hostname
POSTGRES_PORT=5432
POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password
Deploy Eggplant IAM with Docker
-
Download an Eggplant IAM Docker Compose file here.
-
Start Eggplant IAM by running the following command:
docker compose --file docker-compose-6.3.103.yaml --profile default up -d
Example output:
[+] Running 1/1
[+] Running 6/6loak_backend_network Created 0.1s
✔ Network keycloak_backend_network Created 0.1s
✔ Network keycloak_frontend_network Created 0.1s
✔ Volume "keycloak_kc-db-data" Created 0.0s
✔ Container postgres Healthy 0.0s
✔ Container keycloak-server Healthy 0.0s
✔ Container nginx Started -
Run the realm provisoner to add the Eggplant specfic configuration to the installation:
docker compose --file docker-compose-6.3.103.yaml --profile realm-config up
Example output:
[+] Running 1/0
✔ Container kc-realm-config-installer Created 0.0s
Attaching to kc-realm-config-installer
kc-realm-config-installer | inclusions: /config/00_shared/*.yaml
kc-realm-config-installer | import_locs: /config/00_shared/*.yaml,
kc-realm-config-installer | 2025-04-15T16:33:44.905Z INFO 8 --- [ main] d.a.k.config.KeycloakConfigApplication : Starting KeycloakConfigApplication v6.4.0 using Java 21.0.6 with PID 8 (/app/keycloak-config-cli.jar started by nobody in /)
kc-realm-config-installer | 2025-04-15T16:33:44.908Z INFO 8 --- [ main] d.a.k.config.KeycloakConfigApplication : No active profile set, falling back to 1 default profile: "default"
kc-realm-config-installer | 2025-04-15T16:33:45.362Z INFO 8 --- [ main] d.a.k.config.KeycloakConfigApplication : Started KeycloakConfigApplication in 0.789 seconds (process running for 1.173)
kc-realm-config-installer | 2025-04-15T16:33:45.838Z INFO 8 --- [ main] d.a.k.config.KeycloakConfigRunner : Importing file 'file:/config/00_shared/01_master_realm.yaml'
kc-realm-config-installer | 2025-04-15T16:33:47.005Z INFO 8 --- [ main] d.a.k.config.KeycloakConfigRunner : Importing file 'file:/config/00_shared/02_shared_realm.yaml'
kc-realm-config-installer | 2025-04-15T16:33:48.544Z INFO 8 --- [ main] d.a.k.config.KeycloakConfigRunner : Importing file 'file:/config/00_shared/03_shared_client_scopes.yaml'
kc-realm-config-installer | 2025-04-15T16:33:48.856Z INFO 8 --- [ main] d.a.k.config.KeycloakConfigRunner : Importing file 'file:/config/00_shared/04_shared_client.yaml'
kc-realm-config-installer | 2025-04-15T16:33:49.196Z INFO 8 --- [ main] d.a.k.config.KeycloakConfigRunner : Importing file 'file:/config/00_shared/05_shared_client_roles.yaml'
kc-realm-config-installer | 2025-04-15T16:33:50.352Z INFO 8 --- [ main] d.a.k.config.KeycloakConfigRunner : Importing file 'file:/config/00_shared/06_shared_roles.yaml'
kc-realm-config-installer | 2025-04-15T16:33:50.914Z INFO 8 --- [ main] d.a.k.config.KeycloakConfigRunner : keycloak-config-cli ran in 00:05.243.
kc-realm-config-installer exited with code 0infoOther useful Docker commands:
-
docker-compose --profile name logs
shows logs from all containers -
docker logs container_name
shows logs from selected container -
docker-compose --profile name stop
to stop running containers. -
docker-compose --profile name down
to tear down all deployed resources
-
Uninstalling
You can uninstall by running the command below.
docker compose --file docker-compose-<version>.yaml --profile default --profile realm-config down --volumes