如何先启动一个容器?

时间:2019-05-02 20:51:20

标签: docker docker-compose

在启动backend-container之后,我需要启动database-container。我该如何使用docker-compose?

3 个答案:

答案 0 :(得分:0)

您应该查看docker compose的depends_on配置。

简而言之,您应该可以执行以下操作:

services:
  database-container:
    # configuration
  backend-container:
    depends_on:
      - database-container
    # configuration

答案 1 :(得分:0)

在您的后端容器上使用depends_on子句。像这样的东西:

version: "3.7"
services:
  web:
    build: .
    depends_on:
      - db
  db:
    image: postgres

Here是有关它的文档。 玩得开心!

答案 2 :(得分:0)

depends_on字段将与docker-compose一起使用,但是如果升级到群集模式,您会发现它不受支持。它还可以确保已创建数据库容器,但不一定已准备好接收连接。

为此,有几种选择:

  • 让后端容器失败并配置重新启动策略。这很丑陋,导致报告错误,但也最容易实现。
  • 通过重试循环,重试之间的睡眠以及超时(如果数据库无法及时启动)来与应用程序建立连接。通常,这是我的首选方法,但是需要更改您的应用程序。
  • 使用入口点脚本和类似wait-for-it.sh的命令来等待远程资源可用,一旦该命令成功,就启动您的应用程序。这并不能涵盖所有方案作为一个完整的客户端连接,但是由于只需要更改入口点脚本而不是应用程序本身,因此实现起来不会那么麻烦。