Использование Docker-Compose для разворачивания нескольких экземпляров контейнера с различными конфигурациями
Я понимаю, что вы можете с помощью команды масштабирования пользовательской докеры скомпенсировать несколько контейнеров. Тем не менее, все они будут иметь одинаковую конфигурацию.
Можно ли запустить контейнер на том же хосте с разными конфигурациями (разные файлы .yml
) на том же хосте?
Используя следующие команды:
docker-compose -f dev.yml up -d
docker-compose -f qa.yml up -d
будет запущен только контейнер qa.yml
, чего я не хочу.
- изменить -
Вот что происходит, когда я пытаюсь запустить обе команды.
$ docker-compose -f compose/dev.yml up -d
compose_mydocker_1 is up-to-date
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
905912df6e48 compose_mydocker "/sbin/my_init" 2 days ago Up 2 days 0.0.0.0:1234->80/tcp compose_mydocker_1
$ docker-compose -f compose/qa.yml up -d
Recreating compose_mydocker_1...
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3fc912201224 compose_mydocker "/sbin/my_init" 5 seconds ago Up 5 seconds 0.0.0.0:1235->80/tcp compose_mydocker_1
Мои qa.yml
и dev.yml
выглядят следующим образом:
mydocker:
build: ..
ports:
- "1234:80" #for dev.yml
#- "1235:80" for qa.yml
environment:
- ENVIRONMENT=dev #and vice-versa for qa
volumes:
- ../assets/images:/var/www/assets
Ответы
Ответ 1
Что вам нужно сделать, это изменить название проекта. По умолчанию compose использует проект, основанный на текущем каталоге. В вашем случае вам нужны отдельные среды, поэтому вам нужны разные названия проектов.
Вы можете использовать либо docker-compose -p <project_name>
, либо установить COMPOSE_PROJECT_NAME
в среде.
Также обсуждается вопрос о том, как сохранить название проекта: https://github.com/docker/compose/issues/745