如何使第二个容器在docker-compose中已经启动之前一直不运行?

时间:2019-02-05 09:42:32

标签: node.js mongodb docker-compose

我正在尝试使用“ docker-compose up” 通过docker compose运行容器,但出现错误。

我必须为我的应用程序nodejs容纳一个容器,为我的数据库mongo db容纳另一个容器,它们彼此连接。

version: "2"
services:
  app:
    container_name: sam-node
    restart: always
    image: amazus/sam-apis
    ports:
      - "3000:3000"
    links:
      - mongo
  mongo:
    container_name: sam-mongo
    image: amazus/sam-data
    ports:
      - "27017:27017"

我得到的错误是:第一次连接时无法连接到服务器[mongo:27017]

1 个答案:

答案 0 :(得分:1)

添加depends_on参数

app:
  container_name: sam-node
  restart: always
  image: amazus/sam-apis
  ports:
    - "3000:3000"
  depends_on: 
    - mongo
  links:
    - mongo

此外,如果要在完全初始化父容器之后启动依赖容器,则应添加command参数以检查父容器是否已初始化和构建。
阅读更多here

为什么会需要这个?
因为某些服务(例如数据库)可能会初始化一段时间,并且如果您有一些需要立即响应的特定逻辑,则最好在父项初始化完成后启动依赖容器。