准备好keycloak http端点后运行shell脚本

时间:2019-07-16 14:47:29

标签: docker dockerfile keycloak

简化方案:

Dockerfile:

FROM jboss/keycloak
COPY ./initialize.sh /
RUN chmod +x initialize.sh

initialize.sh:

#!/bin/bash
curl http://localhost:8080/auth

我要实现的目标如下:

  • 启动密钥斗篷容器
  • initialize.sh之后执行/auth脚本 容器内的http端点已准备就绪
  • 使用keycloak-cli添加测试用户和角色

背后的动机是创建一个密钥斗篷容器,该容器与https://www.testcontainers.org/一起用于集成测试。

正式的jboss/keycloak映像具有一个KEYCLOAK_IMPORT环境变量,该变量可以进行领域导入,但是无法导入集成测试所需的用户和角色。

2 个答案:

答案 0 :(得分:1)

您应该使用docker healthcheck

Healthcheck将在开始执行容器之前确定容器是否健康。

在您的dockerfile

中添加这些行
HEALTHCHECK --interval=5m --timeout=3s \
  CMD curl --fail http://localhost:8080/auth || exit 1

OR

修改您的docker run命令。

  

docker run -itd --health-cmd“ curl --fail http://localhost:8080/auth   ||退出1“ --health-interval = 5s --timeout = 3s图片名称

希望这会有所帮助,让我知道。

答案 1 :(得分:0)

要将整个领域(客户端,用户,角色...)导出到json文件,您可以执行以下操作:

docker exec -it keycloak_keycloak_1 opt/jboss/keycloak/bin/standalone.sh \
-Djboss.socket.binding.port-offset=100 -Dkeycloak.migration.action=export \
-Dkeycloak.migration.provider=singleFile \
-Dkeycloak.migration.realmName=demo-realm \
-Dkeycloak.migration.usersExportStrategy=REALM_FILE \
-Dkeycloak.migration.file=/tmp/demo-realm.json

然后按照docker文档中的说明,在KEYCLOAK_IMPORT变量中引用这些文件。