我有一个自定义的mysql映像。当我们运行容器时,它会从我们的工件中下载一个mysql转储以加载一些数据。我的docker run命令中具有以下运行状况检查:
--health-cmd='mysql -u myusername -pMyPassword'
但是我要做的是在导入数据后将容器的运行状况设置为正常,通常需要5分钟左右。我的一个想法可能是设置一个环境变量,但是在那种情况下,我不知道health-cmd是什么。也许有更好的方法可以做到这一点?
我只是从docker开始,我的知识非常有限。
答案 0 :(得分:1)
一个简单的解决方案是在完成加载后更新特殊表(例如status
)。然后,用bash
脚本替换运行状况检查命令
#!/usr/bin/env bash
# the table status is updated when the load finishes
SQLSTMT="SELECT status FROM myDatabase.status WHERE status='done'"
# execute the SQL script and get the result
STATUS=`mysql -AN -e "${SQLSTMT}"`
# return exit code 0 (container healthy) if status is done,
# otherwise exit code 1 (container is not healthy)
[ "$STATUS" == 'done' ]
health-cmd
变为:
--health-cmd='/path/to/script.sh'
即使在加载过程结束后创建表,它也应该起作用。
另一个选项是在加载完成后创建一个新文件(甚至为空)。运行状况命令将测试文件的存在:
--health-cmd="/usr/bin/test -f /path/to/file"