Как заставить второй контейнер не запускаться, пока первый не будет запущен в docker-compose? - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь запустить в контейнер через docker compose, используя "docker-compose up" , но я получаю сообщение об ошибке.

Мне нужно создать контейнер для моего приложения 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"

ошибка, которую я получил: ailed to connect to server [mongo: 27017] при первом подключении

1 Ответ

0 голосов
/ 05 февраля 2019

Добавить depends_on параметр

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

Также, если вы хотите запустить зависимый контейнер после полной инициализации родительского контейнера, вы должны добавить параметр command впроверьте, был ли инициализирован и собран родительский контейнер.
Подробнее здесь

Зачем вам это нужно?
Поскольку некоторые службы, такие как база данных, могут инициализироваться в течение некоторого времении если у вас есть определенная логика, которая требует немедленного ответа, лучше запустить зависимый контейнер после завершения инициализации родительского контейнера.

...