我想在Windows的Dockerfile中做类似的事情:
HEALTHCHECK --interval=5s
--timeout=5s
CMD C:\src\curl.exe -f http://127.0.0.1:8080/health; if($LastExitCode) {$LastExitCode=1}
命令本身似乎很好。每当我尝试在Dockerfile中定义它时出现的问题时,出现的问题就会更改为1。Docker运行时,我会在Inspect中关注输出:
(6) Couldn't resolve host 'if($LastExitCode)'rncurl: (6) Couldn't resolve host '$LastExitCode=1'rn"
基本上,他将所有人都视为卷曲的论点。知道我该如何解决这个问题?我知道我可以写一个脚本并将其放入容器中,但我宁愿不这样做。
HEALTHCHECK CMD powershell -command `
try { `
$response = iwr http://localhost; `
if ($response.StatusCode -eq 200) { return 0} `
else {return 1}; `
} catch { return 1 }
在网络上找到了这个,也许如果您不想使用或有卷发。
这是经过正确的健康检查(在PowerShell中,您需要使用" Exit" exit",而不是返回"(。。
HEALTHCHECK CMD powershell -command `
try { `
$response = iwr http://localhost; `
if ($response.StatusCode -eq 200) { exit 0 } `
else { exit 1 }; `
} catch { exit 1 }
文档:https://docs.docker.com/engine/reference/builder/#healthcheck
最终解决了!如果有人需要,这是一个对我有用的解决方案:
CMD powershell C:\src\curl.exe -f http://127.0.0.1:8080/health; if($LastExitCode) {exit 1}