使用healthcheck测试最小Docker容器

svgewumm  于 2023-08-03  发布在  Docker
关注(0)|答案(2)|浏览(140)

我有5个集装箱一个接一个地跑。第一个3,(ABC)非常小。ABC容器需要进行健康检查,但curl,wget不能在它们上运行,所以目前我只是在docker-compose. yml中运行test:[CMD-SHELL], "whoami || exit 1"。这似乎使他们处于一种健康的状态。正在使用test: [CMD-SHELL] , "curl --fail http://localhost"命令检查依赖于ABC的其他2个(DE)是否正常。我的问题是如何正确地检查这些最小容器的健康状况,而不使用curl,wget等。?

piok6c0g

piok6c0g1#

如果你可以接受对内部服务端口的TCP连接测试,你可以使用/dev/tcp:
第一个月
就像这样:

# PASS (webserver is serving on 8099)
root@ab7470ea0c8b:/app# echo -n > /dev/tcp/127.0.0.1/8099
root@ab7470ea0c8b:/app# echo $?
0

# FAIL (webserver is NOT serving on 9000)
root@ab7470ea0c8b:/app# echo -n > /dev/tcp/127.0.0.1/9000
bash: connect: Connection refused
bash: /dev/tcp/127.0.0.1/9000: Connection refused
root@ab7470ea0c8b:/app# echo $?
1

字符串
不幸的是,我认为这是不安装curl或wget就能做到的最好的。

zbdgwd5y

zbdgwd5y2#

我在keycloak中使用以下命令进行docker健康检查:

exec 3<>/dev/tcp/localhost/80;echo -e "GET /health/live HTTP/1.1\r\nhost: http://localhost\r\nConnection: close\r\n\r\n" >&3;grep "HTTP/1.1 200 OK" <&3

字符串

相关问题