docker - 在 keycloak http 端点准备好后运行 shell 脚本
问题描述
简化场景:
Dockerfile:
FROM jboss/keycloak
COPY ./initialize.sh /
RUN chmod +x initialize.sh
初始化.sh:
#!/bin/bash
curl http://localhost:8080/auth
我想要实现的是以下内容:
- 启动密钥斗篷容器
-
在容器内的 http 端点准备好后执行
initialize.sh
脚本/auth
- 使用 keycloak-cli 添加测试用户和角色
背后的动机是创建一个 keycloak 容器,与https://www.testcontainers.org/一起用于集成测试。
官方jboss/keycloak
镜像有一个KEYCLOAK_IMPORT
启用领域导入的环境变量,但无法导入集成测试所需的用户和角色。
解决方案
您应该使用 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
希望这有帮助,让我知道。
推荐阅读
- angular - 在客户端加密字符串,以便服务器可以保证数据来自客户端并且不是用户生成的
- http - 网页安全 - http、https、hsts
- function - hc-05蓝牙模块如何调用多个功能?
- html - Django 模型没有更新
- javascript - 如何将 Firestore 集合加载到 Vuex 状态?
- javascript - this.RowClicked 不是 HTMLTableCellElement.eval 中的函数尝试获取“tr”元素的 id 时
- flutter - Flutter/Dart 重建一个有状态的小部件
- javascript - 如何在无状态组件中使用 react-rangeslider
- node.js - 在不使用数字索引的情况下更新 mongodb nodejs 中的双嵌套嵌入文档
- serial-port - Ada - 使用 ttyUSB 设备(FTDI 芯片)时的时序问题