Docker 在 Windows 容器上的运行状况检查和退出代码("||" 等效于 linux)



我想在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}

最新更新