在 Docker-Compose 中控制启动顺序

ute*_*ngr 2 docker dockerfile docker-compose

除了以下方法之外,是否可以控制 Docker-compose 中启动容器的顺序?

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

version: "2"
services:
  web:
    build: .
    ports:
      - "80:8000"
    depends_on:
      - "db"
    command: ["./wait-for-it.sh", "db:5432", "--", "python", "app.py"]
  db:
    image: postgres
Run Code Online (Sandbox Code Playgroud)

我有一个依赖于 redis 数据库容器的容器。然而,redis 加载到内存中需要更长的时间,这会导致第一个容器退出。目前,我使用始终重新启动方法来处理该问题作为解决方法。

我想知道是否有更好的替代方案,因为我会尝试避免等待脚本?

Neb*_*ril 6

您可以在 Redis 容器中指定运行状况检查并将其添加condition: service_healthy到您的depends_on字段中。从 compose 2.1 开始就有效

version: "2.1"
services:
  web:
    build: .
    ports:
      - "80:8000"
    depends_on:
      "db":
        condition: service_healthy
    command: ["python", "app.py"]
  db:
    image: postgres
Run Code Online (Sandbox Code Playgroud)

详细的使用示例在这里:https://github.com/peter-evans/docker-compose-healthcheck/blob/master/docker-compose.yml

  • 是否有与版本 3 相当的版本?https://github.com/moby/moby/issues/30404#issuecomment-323212621 (2认同)