如何添加docker运行状况检查以testingTCP端口是否打开?
我有一个服务器端口9083上运行的Apache蜂巢服务。事情是它不支持http
协议(但使用thrift
协议)。所以我不能简单地添加
HEALTHCHECK CMD http://127.0.0.1:9083 || exit 1 # this check fails
我想要的只是检查该端口是否打开。 我有netstat
和curl
在服务器上,但不是nc
。
到目前为止,我尝试了下面的选项,但没有一个适合作为健康检查。
netstat -an | grep 9083 | grep LISTEN | echo $? # This works netstat -an | grep 9084 | grep LISTEN | echo $? # but so does this
正如我从上面解释的问题是它只是告诉我,我的语法是正确的,但不是真的testing,如果该端口真的听
因为当我做netstat -an
我得到以下输出,这清楚地显示只有9083
听,而不是9084
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:9083 0.0.0.0:* LISTEN tcp 0 0
你可以使用/dev/tcp
喜欢这个 :
printf "GET / HTTP/1.1\n\n" > /dev/tcp/127.0.0.1/9083
有关更多信息,可以查看: http : //www.tldp.org/LDP/abs/html/devref1.html#DEVTCP