Keycloak im Docker
Einleitung
Um die Einrichtung und Verwaltung der neuen Applikationslandschaft, insbesondere der Installation von Keycloak zu vereinfachen, bieten wir ein Docker-Image an. Dieses Docker-Image baut auf dem offiziellen Image von Keycloak auf. Die Dokumentation dieses Images ist hier zu finden und beschreibt zum Beispiel die nötige Konfiguration der Datenbankanbindung und führt pro Datenbank konkrete Beispiele auf. Eine Datenbank-Anbindung von Keycloak ist notwendig, um Keycloak im von uns empfohlenen Standalone Clustered Mode zu betreiben. Siehe dazu auch die separate Anleitung zur Keycloak-Installation unter Modus.
Docker Image
Das Docker Image wird mit dem Tagname
docker-nob-erf.next-level-apps.com/keycloak:2020-11-10
angeboten. Man kann das Image ebenfalls durch den folgenden Befehl auf einem Docker
Server bezogen werden:
docker pull docker-nob-erf.next-level-apps.com/keycloak:2020-11-10
Service
Analog zum B2BUI empfehlen wir, zum Starten des Dockerimages docker-compose
zu verwenden.
Sofern Sie eine Kubernetes Umgebung pflegen können sie Keycloak auch als POD betreiben.
Dafür muss eine Datei docker-compose.yml
zum Beispiel wie die folgende erstellt werden (im Beispiel mit oracle).
docker-compose.yml
:
# Keycloak
version: '3.3'
services:
keycloak:
image: docker-nob-erf.next-level-apps.com/keycloak:2020-11-10
restart: always
ports:
- 8080:8080
environment:
- DB_VENDOR=oracle
- DB_ADDR=my.server.de
- DB_PORT=1234
- DB_DATABASE=MyDatabase
- DB_USER=admin
- DB_PASSWORD=***
# these create the first admin account. Remove these properties after first boot.
- KEYCLOAK_USER=admin
- KEYCLOAK_PASSWORD=***
volumes:
- ./ojdbc6.jar:/opt/jboss/keycloak/modules/system/layers/base/com/oracle/jdbc/main/driver/ojdbc.jar
Beachten Sie in dem Beispiel, dass hier eine ojdbc.jar
verfügbar sein muss.
Die verschiedenen Parameter
Parameter | Wert | Beschreibung |
---|---|---|
version | aktuell 3.3 | Die Version des docker-compose-file (Compose file format compatibility matrix) |
image | nexus-docker.next-level-apps.com/keycloak:nli-10 | Der Link und Name des Dockerimages, welches geladen werden soll. Es wird aus dem NLI-Nexus-Repository geladen. Im Image ist Keycloak in der Version 10 enthalten. |
restart | always | Damit startet Docker den Caontainer automatisch neu, sollte er abgestürzt sein oder Docker selbst neugestartet werden. |
environment | ihre Datenbankkonfiguration | In diesen Eigenschaft muss der Zugang zur Datenbank konfiguriert werden. Weitere Details sind im Abschnitt Environment variables der Dokumentation des offiziellen Dockerimages zu finden. |
ports | 8066:8080 | Der hintere Port ist jener, auf welchem Keycloak innerhalb des Dockercontainers erreichbar wäre. Der vordere ist der Port, welchen der Container nach außen freigibt und auf den internen Port abbildet. |
<db-address>
im environment kann hier nicht als Host localhost
enthalten.
Siehe dazu auch der Abschnitt localhost auf der Seite über Docker.Aufgaben
Dieser Abschnitt listet konkrete Aufgaben und Entscheidungen bei der Benutzung des Dockerimages auf.
- Datenbank wählen und konfigurieren
- Es muss eine Datenbank gewählt und grundlegend konfiguriert werden. Es muss ein Schema und zum Beispiel die Datenbank
keycloak
( default in environment/DB_DATABASE) angelegt werden.
- Es muss eine Datenbank gewählt und grundlegend konfiguriert werden. Es muss ein Schema und zum Beispiel die Datenbank
- Datenbank-Tabellen von Keycloak initialisieren
lassen - Dokumentation
- Keycloak legt die Datenbanktabellen selbst beim ersten Start an
- Admin Account anlegen
- Um auf die Keycloak-Admin-Oberfläche zugreifen zu können, muss ein Admin-User angelegt werden. Siehe dazu Abschnitt Creating admin account in der Dokumentation des offiziellen Dockerimages
- Befehl:
docker exec <CONTAINER> /opt/jboss/keycloak/bin/add-user-keycloak.sh -u <USERNAME> -p <PASSWORD>
(<CONTAINER>
siehe Id indocker ps
, siehe auch Docker) <USERNAME>
und<PASSWORD>
sind zu befüllen
- Keycloak konfigurieren
- In Keycloak müssen
Realm
und verschiedeneClients
konfiguriert werden, siehe dazu Keycloak Konfiguration
- In Keycloak müssen
- Benutzerdatenbank im Realm setzen