首页 > 解决方案 > 在 keycloak http 端点准备好后运行 shell 脚本

问题描述

简化场景:

Dockerfile:

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

初始化.sh:

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

我想要实现的是以下内容:

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

官方jboss/keycloak镜像有一个KEYCLOAK_IMPORT启用领域导入的环境变量,但无法导入集成测试所需的用户和角色。

标签: dockerdockerfilekeycloak

解决方案


您应该使用 docker healthcheck

Healthcheck 将在开始执行之前确定容器何时处于健康状态。

在你身上添加这些行dockerfile

HEALTHCHECK --interval=5m --timeout=3s \
  CMD curl --fail http://localhost:8080/auth || exit 1

或者

修改你的docker run命令。

docker run -itd --health-cmd "curl --fail http://localhost:8080/auth || exit 1" --health-interval=5s --timeout=3s image-name

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


推荐阅读