在特定容器启动并运行后旋转容器

时间:2018-07-23 19:50:52

标签: postgresql docker docker-compose

在此处,docker-compose(和docker通常)中的新功能, 我有一个docker compose文件,如下所示:

version: '3.5'

services:
   db:
      image: seeded-postgres_location
      ports:
      - 5432

   serv1:
      image: service1_location

   serv2:
      image: service2_location

这里的种子化postgres是一个基于postgres的容器,并在其中初始化了一些数据。

service1需要在启动前先启动并运行seeded-postgres容器,因为它运行一些迁移并使用postgres中的数据。

所以我的问题是这些服务/容器是否按docker-compose列出的顺序顺序启动?

我想确保db容器首先启动,并且在启动并准备好后,service1和service2正在启动。

从docker-compose的角度来看,还有没有办法检查这些容器中的任何一个是否引发了任何错误?

1 个答案:

答案 0 :(得分:1)

您可以使用depends_on来表示服务之间的依赖关系。 但是遗憾的是,这和运行状况检查都不能保证依赖项在实际服务启动之前已完全启动并运行。

这只能通过自定义逻辑(在容器中实现)来实现,该逻辑将检查并等待直到依赖项可用为止。即在入口点脚本中检查postgres端口是否可访问。