我知道检查Docker容器的运行状况的方法之一是使用命令
HEALTHCHECK CMD curl --fail http://localhost:3000/ || exit 1
@H_404_8@但是如果工人没有这样的URL,那么如何在这种情况下检查容器的健康状况?
最佳答案
celery inspect ping命令派上用场,因为它完成了一次旅行:它在代理上发送“ping”任务,工作人员响应并且芹菜获取响应.
原文链接:https://www.f2er.com/docker/436711.html假设您的应用程序名为tasks.add,您可以ping所有工作人员:
/app $celery inspect ping -A tasks.add -> celery@aa7c21dd0e96: OK pong -> celery@57615db15d80: OK pong
@H_404_8@aa7c21dd0e96是Docker主机名,因此可以在$HOSTNAME中使用.
要ping单个节点,您必须运行:
celery inspect ping -A tasks.add -d celery@$HOSTNAME
@H_404_8@这里,d代表目的地.
要添加到Dockerfile的行:
HEALTHCHECK CMD celery inspect ping -A tasks.add -d celery@$HOSTNAME
@H_404_8@样本输出:
/app $celery inspect ping -A tasks.add -d fake_node Error: No nodes replied within time constraint. /app $echo $? 69
@H_404_8@如果节点不存在或没有回复,则不健康
/app $celery inspect ping -A tasks.add -d celery@$HOSTNAME -> celery@d39b3d31cc13: OK pong /app $echo $? 0
@H_404_8@当节点回复pong时健康.
/app $celery inspect ping -d celery@$HOSTNAME Traceback (most recent call last): ... raise socket.error(last_err) OSError: [Errno 111] Connection refused /app $echo $? 1
@H_404_8@当代理不可用时不健康 – 我删除了应用程序,因此它尝试连接到本地AMPQ并失败
这可能不适合您的需求,经纪人不健康,而不是工人.