简化方案:
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端点已准备就绪背后的动机是创建一个密钥斗篷容器,该容器与https://www.testcontainers.org/一起用于集成测试。
正式的jboss/keycloak
映像具有一个KEYCLOAK_IMPORT
环境变量,该变量可以进行领域导入,但是无法导入集成测试所需的用户和角色。
答案 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
变量中引用这些文件。