Если вы выполните docker-compose --help
, вы увидите:
-p, --project-name NAME Specify an alternate project name
(default: directory name)
Что это означает, что по умолчанию, когда вы делаете docker-compose up
, Compose управляет вашими службами как частью проекта, который назван в честь имени каталога, в котором находится docker-compose.yml
файл. Поскольку ваши файлы составления dev & prod находятся в одном каталоге и имеют одинаковые имена служб, Compose не может отличить guish одно от другого.
Имея это в виду, для того, чтобы среда dev и prod работала одновременно, вам нужно указать имя проекта с помощью -p
или --project-name
флага, например:
docker-compose -f docker-compose.yml -f docker-compose.dev.yml -p dev_env up
Другой вариант - использовать COMPOSE_PROJECT_NAME
переменную среды, такую как:
COMPOSE_PROJECT_NAME=dev_env docker-compose -f docker-compose.yml -f docker-compose.dev.yml up
Потенциальная проблема в вашем случае может быть host
режим сети, если оба dev и prod использовать те же порты. В этом случае тот, кого вы запускаете вторым, не сможет запуститься.