【问题标题】:Use Linux grep to check if docker-compose service is healthy [duplicate]使用 Linux grep 检查 docker-compose 服务是否健康 [重复]
【发布时间】:2020-05-07 17:49:51
【问题描述】:

我有 2 个服务:service-backgroundservice-webapi。这些在 docker-compose 中注册。需要先启动服务后台。只有这样 service-webapi 才能启动。这是一个固定的顺序。我在 docker-compose.yml 中有以下配置:

networks:
   my-fantastic-network

services:
   background-service:
      build: backgroundproject
      networks:
         my-fantastic-network:
            aliases:
               -background-service

webapi-service:
   build: webapi
   depends_on: 
     -background-service
   networks:
      my-fantastic-network:
         aliases:
            -webapi-service

我认为这足以让 webapi-service 等待后台服务,但是这个启动太快并且完全搞砸了。

我的后台服务有一个日志文件,文件结构如下:server/database/logs/startup.log 如果日志文件中包含“Database initialized successfully”,则说明后台服务已准备就绪,webapi-service 可以安全启动。我可以使用 Linux grep 函数来检查我的日志文件是否包含此特定文本。但我不知道如何使用 docker-compose 来做到这一点。

我做了一些研究,在 docker-compose 中可以使用 healthcheck 属性,但我不太熟悉。

有人可以帮我吗?

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    看看非常好的 docker 文档: https://docs.docker.com/compose/compose-file/#healthcheck

    但也许它不是适合您的解决方案。 我建议调查一下:

    https://docs.docker.com/compose/startup-order/

    这是一个简单实用的解决方案,在图像中添加了一个脚本,首先等待与数据库的连接,然后它会启动实际的启动脚本。

    希望这会有所帮助。

    【讨论】:

    • 我不知道如何在容器 B 启动时从容器 A 访问日志文件。这也没有在该文档中描述。
    • 是的,在这种情况下您不会检查日志文件。您将检查实际服务是否已启动并接受 tcp 连接。此步骤在我的第二个超链接中进行了描述。
    猜你喜欢
    • 1970-01-01
    • 2020-11-16
    • 2017-08-01
    • 2022-10-14
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    相关资源
    最近更新 更多