Docker 通过CLI命令配置停靠的KeyClope
我正在尝试配置Dockerfile中的dockerized KeyClope服务器,如通过CLI命令创建域:Docker 通过CLI命令配置停靠的KeyClope,docker,command-line-interface,keycloak,Docker,Command Line Interface,Keycloak,我正在尝试配置Dockerfile中的dockerized KeyClope服务器,如通过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 htt
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中配置KeyClope的正确方法应该是什么
谢谢。显然,当您想要添加域时,KeyClope必须正在运行,并且必须连接到数据库。当你建立Docker形象时,情况就不是这样了。这只能在容器运行时完成,所以请使用启动脚本 可以通过创建自己的Dockerfile添加自定义脚本:
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
从钥匙斗篷
复制自定义脚本//opt/jboss/startup脚本/
下面是一个关于如何为ubuntu做这件事的例子
docker run --name keycloak -p 8484:8080 -e DB_VENDOR=h2 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin jboss/keycloak:11.0.0
kcadm.sh get realms
do:
docker exec -it keycloak /opt/jboss/keycloak/bin/kcadm.sh get realms --server http://localhost:8080/auth --realm master --user admin --password admin
使用文件创建领域
,请在运行时将文件目录映射到KeyClock中(直接映射文件在理论上也可以工作),例如:
我猜启动脚本将在容器初始化时执行,因此重新启动它时,配置将重复,即。E如果脚本创建了一个领域,我停止并重新启动容器,那么这个领域将再次被创建(假设keybeapt允许相同的领域)@PacoAbato那么为什么不在脚本中加入业务逻辑:仅当领域不存在时创建领域我刚刚读到,容器不应停止并恢复,而应销毁并再次创建新的,我将稍后尝试您的解决方案,谢谢。我成功地执行了启动脚本,但是像
/opt/jboss/keydove/bin/kcadm.sh这样的命令创建领域时总是失败。我想我必须使用嵌入式命令,比如/subsystem=keydove server/:write-attribute(name=web-context,value=myContext)
,但是找不到哪些属性可以用来添加域。