码头工人';Windows容器和退出代码上的s healthcheck(与linux等效)

码头工人';Windows容器和退出代码上的s healthcheck(与linux等效),windows,powershell,curl,docker,Windows,Powershell,Curl,Docker,我想在windows的Dockerfile中执行以下操作: HEALTHCHECK --interval=5s \ --timeout=5s \ CMD C:\\src\\curl.exe -f http://127.0.0.1:8080/health; if($LastExitCode) {$LastExitCode=1} 命令本身似乎很好。每当curl返回的值不同于0时,退出代码就更改为1。当我试图在Dockerfile中定义它时,问题出现了

我想在windows的Dockerfile中执行以下操作:

HEALTHCHECK --interval=5s \
            --timeout=5s \
            CMD C:\\src\\curl.exe -f http://127.0.0.1:8080/health; if($LastExitCode) {$LastExitCode=1}
命令本身似乎很好。每当curl返回的值不同于0时,退出代码就更改为1。当我试图在Dockerfile中定义它时,问题出现了。Docker运行它时,我在inspect中得到以下输出:

(6) Couldn't resolve host 'if($LastExitCode)'\r\ncurl: (6) Couldn't resolve host '$LastExitCode=1'\r\n"

基本上,他把分号后的所有东西都当作旋度的参数。你知道我该怎么处理吗?我知道我可以编写脚本并将其放入容器中,但我不想这样做。

最终解决了它!如果其他人需要,这里有一个适合我的解决方案:

CMD powershell C:\\src\\curl.exe -f http://127.0.0.1:8080/health; if($LastExitCode) {exit 1}

终于解决了!如果其他人需要,这里有一个适合我的解决方案:

CMD powershell C:\\src\\curl.exe -f http://127.0.0.1:8080/health; if($LastExitCode) {exit 1}
在上找到这个,如果你不想使用或拥有curl,可能有任何用处


在上找到此选项,如果您不想使用或使用curl,则可能有任何用途。

这是一个正确的健康检查测试(在Powershell中,您需要使用“退出”而不是“返回”)


文档:

这是一个经过测试的正确健康检查(在Powershell中,您需要使用“退出”而不是“返回”)


文档:

你说的“垃圾操作系统”显然是指那些你对游戏一无所知的操作系统,除了游戏,它是没有用的:)是的,很明显,如果你在curl中使用类似powershell的东西,你是一个非常有创造力的人,你应该为自己买一台mac电脑,让自己感觉更好。mac OS可能并不比Windows好。对于开发人员来说,唯一合理的操作系统自然是linux。顺便提一下如果你有更好的解决办法,我的耳朵就归你了。我使用了curl,因为它很小,在linux上工作得很好。除此之外,windows容器将与linux容器上的容器更加一致。。。但正如我所说,请启发我,而不是批评。我如何才能做得更好?只需使用powershell cmdlet<代码>调用webrequest?它甚至还有一个别名
curl
,专门为那些只使用世界上最好的操作系统的人设计。顺便说一句,我在Windows上使用Windows+Bash,这是一个比普通Linux好得多的设置,原因很明显,“垃圾操作系统”的意思显然是你对操作系统一无所知,除了游戏,这是没有用的:)是的,很明显,如果你在curl中使用类似powershell的东西,你是一个非常有创造力的人,你应该买一台mac电脑让自己感觉更好——mac操作系统可能并不比Windows好多少。对于开发人员来说,唯一合理的操作系统自然是linux。顺便提一下如果你有更好的解决办法,我的耳朵就归你了。我使用了curl,因为它很小,在linux上工作得很好。除此之外,windows容器将与linux容器上的容器更加一致。。。但正如我所说,请启发我,而不是批评。我如何才能做得更好?只需使用powershell cmdlet<代码>调用webrequest?它甚至还有一个别名
curl
,专门为那些只使用世界上最好的操作系统的人设计。顺便说一句,我在Windows上使用Windows+Bash,这是一个比普通Linux更好的设置,原因很明显
HEALTHCHECK CMD powershell -command `  
try { `
 $response = iwr http://localhost; `
 if ($response.StatusCode -eq 200) { exit 0 } `
 else { exit 1 }; `
} catch { exit 1 }