This question already has answers here:
Docker Compose wait for container X before starting Y
(17个答案)
在10个月前关闭。
我有2个服务:服务-后台和服务-webapi 。这些已在 docker-compose 中注册。需要先启动服务后台。只有这样才能启动service-webapi。这是固定订单。我在docker-compose.yml中有以下配置:
我认为这足以让webapi-service等待后台服务,但是这一服务启动得太早了,完全搞砸了。
我的后台服务具有以下文件结构的日志文件:server / database / logs / startup.log
如果日志文件包含文本“数据库初始化成功”,则后台服务已准备就绪,并且webapi服务可以安全启动。我可以使用Linux grep 函数来检查我的日志文件是否包含此特定文本。但是我不知道如何用docker-compose做到这一点。
我做了一些研究,并在docker-compose中使用了 healthcheck 属性,但我对此不太熟悉。
有人能帮我吗?
(17个答案)
在10个月前关闭。
我有2个服务:服务-后台和服务-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
如果日志文件包含文本“数据库初始化成功”,则后台服务已准备就绪,并且webapi服务可以安全启动。我可以使用Linux grep 函数来检查我的日志文件是否包含此特定文本。但是我不知道如何用docker-compose做到这一点。
我做了一些研究,并在docker-compose中使用了 healthcheck 属性,但我对此不太熟悉。
有人能帮我吗?
最佳答案
看看非常好的docker文档:
https://docs.docker.com/compose/compose-file/#healthcheck
但这也许不是适合您的解决方案。
我建议调查一下:
https://docs.docker.com/compose/startup-order/
这是一个简单实用的解决方案,在镜像中带有一个附加脚本,该脚本首先将等待与数据库的连接,然后将启动实际的启动脚本。
希望这可以帮助。
10-07 21:10