Запуск контейнера останавливает другой контейнер - PullRequest
0 голосов
/ 17 февраля 2020

Я создал два базовых c стека приложений MEAN с общей базой данных (пн go дБ). Я также создал docker для этих приложений.

Проблема:

Когда я запускаю контейнер среднего стека (пример-приложение-1), используя

docker-compose up -d --build

Контейнер работает гладко, и я Я также могу поразить контейнер и просмотреть мою страницу локально.

Когда я пытаюсь запустить другой контейнер среднего стека (example-app-2), используя

docker-compose up -d --build

, мой предыдущий контейнер остановлен, и текущий контейнер работает без ошибок.

Обязательно:

Я хочу, чтобы оба этих контейнера запускались одновременно с использованием общей базы данных. Мне нужна помощь в достижении этого.

docker -compose.yml Пример приложения -1

version: '3'

services:
  example_app_1:
    build:
      dockerfile: dockerfile
      context: ../../
    image: example_app_1:1.0.0

  backend:
    image: 'example_app_1:1.0.0'
    working_dir: /app/example_app_1/backend/example-app-1-api
    environment:
      - DB_URL=mongodb://172.17.0.1:27017/example_app_1
      - BACKEND_PORT=8888
      - BACKEND_IP=0.0.0.0
    restart: always
    ports:
      - '8888:8888'
    command: ['node', 'main.js']
    networks: 
      - default
    expose:
      - 8888
  frontend:
    image: 'example_app_1:1.0.0'
    working_dir: /app/example_app_1/frontend/example_app_1
    ports:
      - '5200:5200'
    command: ['http-server', '-p', '5200', '-o', '/app/example_app_1/frontend/example-app-1']
    restart: always
    depends_on:
      - backend
networks:
  default:
    external:
      name: backend_network

docker -compose.yml для Пример приложения 2

version: '3'

services:
  example-app-2:
    build:
      dockerfile: dockerfile
      context: ../../
    image: example_app_2:1.0.0

  backend:
    image: 'example-app-2:1.0.0'
    working_dir: /app/example_app_2/backend/example-app-2-api
    environment:
      - DB_URL=mongodb://172.17.0.1:27017/example_app_2
      - BACKEND_PORT=3333
      - BACKEND_IP=0.0.0.0
    restart: always
    networks:
      - default
    ports:
      - '3333:3333'
    command: ['node', 'main.js']

    expose:
      - 3333
  frontend:
    image: 'example-app-2:1.0.0'
    working_dir: /app/example_app_2/frontend/example-app-2
    ports:
      - '4200:4200'
    command: ['http-server', '-p', '4200', '-o', '/app/example_app_2/frontend/example-app-2
    restart: always
    depends_on:
      - backend
networks:
  default:
    external:
      name: backend_network

enter image description here

1 Ответ

0 голосов
/ 17 февраля 2020

docker -compose создаст контейнеры с именем project_service. Проект по умолчанию исходит из последнего компонента каталога. Поэтому, когда вы запускаете вторую docker -композицию, она останавливает контейнеры с этими именами и запускает новые.

Либо переместите эти два docker -компонованных файла в отдельные каталоги, чтобы имена контейнеров были разными, либо выполните docker -compose с флагом --project-name, содержащим отдельные имена проектов, чтобы контейнеры можно было запускать с разными имена.

...