通过CLI命令配置固定化的Keycloft



我正在尝试配置一个码头化的Key斗篷服务器,就像在Dockerfile:中从CLI命令创建一个领域一样

FROM quay.io/keycloak/keycloak:11.0.0
# Create realm "realm_borrar" on keycloak
RUN /opt/jboss/keycloak/bin/kcadm.sh create realms -s realm=my_new_realm -s enabled=true -o --server http://localhost:8080/auth --realm master --user admin --password admin

docker build -f ...的结果是:

Logging into http://localhost:8080/auth as user admin of realm master
Failed to send request - Connect to localhost:8080 [localhost/127.0.0.1] failed: Connection refused (Connection refused)

如果我运行容器(使用相同的Dockerfile创建,但删除了run语句(并执行相同的CLI命令(kcadm.sh…(,它就可以工作了。

在Dockerfile中配置Key斗篷的正确方法应该是什么?

谢谢。

下面是一个如何为ubuntu做这件事的例子。。。

  1. 在终端,将Keycloft作为dockerfile运行,例如:

    docker run --name keycloak -p 8484:8080 -e DB_VENDOR=h2 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin jboss/keycloak:11.0.0 
    
  2. 在另一个终端上,运行所需的CLI命令作为容器的exec命令,例如对于kcadm.sh get realmsdo:

    docker exec -it keycloak /opt/jboss/keycloak/bin/kcadm.sh get realms --server http://localhost:8080/auth --realm master --user admin --password admin 
    

如果要在同一个终端上运行所有内容,请在第一个docker命令上使用-d(detach(。

对于使用文件的create realms,在运行时映射keycloack内的文件目录(理论上直接映射文件也应该有效(例如:

docker run --name keycloak -p 8484:8080 -d -e DB_VENDOR=h2 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin -v host_abs_path:/cfg jboss/keycloak:11.0.0 
#wait for keycloak to start...
sleep 10
docker exec -it keycloak /opt/jboss/keycloak/bin/kcadm.sh create realms --server http://localhost:8080/auth --realm master --user admin --password admin -f /cfg/my_realms.json

显然,当您想要添加领域时,Keycloft必须运行并且必须连接到DB。当你构建Docker镜像时,情况并非如此。它只能在容器运行时完成,所以请使用启动脚本。

https://hub.docker.com/r/jboss/keycloak/

可以通过创建自己的Dockerfile:来添加自定义脚本

FROM钥匙斗篷复制自定义脚本//opt/jboss/启动脚本/

最新更新