通过 CLI 命令配置 dockerized Keycloak

Pac*_*ato 6 command-line-interface docker keycloak

我正在尝试配置一个 dockerized Keycloak 服务器,比如从 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
Run Code Online (Sandbox Code Playgroud)

结果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)
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢。

Jan*_*raj 1

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

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

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

从 keycloak 复制自定义脚本/ /opt/jboss/startup-scripts/

  • 我设法执行启动脚本,但像“/opt/jboss/keycloak/bin/kcadm.sh create fields”这样的命令不断失败。我想我必须使用诸如“/subsystem=keycloak-server/:write-attribute(name=web-context,value=myContext)”之类的嵌入式命令,但无法找到哪些属性可以完成添加领域的工作。 (2认同)