bash - 如何检测 docker run 和底层守护程序是否以编程方式完全启动?
问题描述
我正在运行 Virtuoso docker 并在其上加载数据。
我在 bash 脚本中拥有所有这些。由于此命令按顺序运行,加载数据通常会失败,因为 Virtuoso 尚未完全启动。
简单的解决方案就是添加一个延迟(睡眠),它可以工作。虽然这是一个有点肮脏的解决方案。
我找到了这个命令
docker inspect -f {{.State.Running}} $CONTAINER_ID
但这仅说明容器是否正在运行。
有没有办法在加载数据之前检查 docker 上的守护进程是否完全启动(在本例中为 Virtuoso)?
解决方案
通用过程是为您的应用程序定义一个健康检查,然后检查该健康状态:
docker inspect --format '{{.State.Health.Status}}' $container_id
所需的输出是healthy
。
有关如何为映像定义健康检查的更多详细信息,请参阅https://docs.docker.com/engine/reference/builder/#healthcheck
您为运行状况检查定义的实际命令会因容器内运行的应用程序而异。
推荐阅读
- git - 同一提交中的多个分支
- react-native - 将 react-native-popup-menu 与 react-native-navigation 集成
- c# - 图表返回“代码:ResourceNotFound 消息:无效版本:我内部错误”
- python - 字符串是否包含我列表中的任何单词?
- asp.net - Session("xxxx") 在 InitializeCulture 方法中始终是 Nothing
- javascript - 如何修复:选项卡索引跳过禁用的输入
- python - 使用 VS 代码打开时 Python 脚本找不到文件,但可以在终端上正常工作
- php - 令牌会话过期时将用户重定向到登录页面 - Laravel 5.8
- php - 更改流明中的 Faker 本地化
- security - 阻止自动对焦跨域子帧中的表单控件