Запуск двух разных контейнеров

Подскажите, можно ли из одного docker-compose собрать 2 разных контейнреа:

version: '3.7'
services:
  my-container:
    container_name: ${CONTAINER_NAME}
    environment:
       - DOCKER_COMMAND=${DOCKER_COMMAND}
    build:
      context: ..
      dockerfile: deployments/Dockerfile

И запустить одновременно. Т.е. в одном случае я запускаю:

DOCKER_COMMAND=run CONTAINER_NAME=c1 docker-compose up my-container

После него запускаю:

DOCKER_COMMAND=test CONTAINER_NAME=c2 docker-compose up my-container

Можно ли сделать так, чтобы они оба работали?


Ответы (2 шт):

Автор решения: Total Pusher

Через docker-compose так сделать нельзя.

Если посмотреть ману docker-compose up --help, то

If there are existing containers for a service, and the service's configuration or image was changed after the container's creation, docker-compose up picks up the changes by stopping and recreating the containers (preserving mounted volumes). To prevent Compose from picking up changes, use the --no-recreate flag.

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

Я проверил, при старте второго первый завершается с кодом 137. Если для второго вызова использовать флаг --no-recreate, то команда фактически ничего не делает, и аттачится к первому контейнеру.

Вывод: так сделать нельзя, кроме дублирования сервиса в docker-compose.yml или запуска через docker run ... (параметры присоединения в сеть docker-compose, монтирование томов, etc).

→ Ссылка
Автор решения: Андрей Мелентьев

Ответ выше не совсем верен можно использовать

docker-compose -p ProjectName up -d

Это позволит запустить с одного файла конфигурации запустить 2 контейнера, остаются только конфликты на уровне портов и имен.

→ Ссылка