Допустим, у меня есть пара сервисов web1
и web2
, и я могу раскрутить их в prod или dev
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
Теперь, скажем, я делаю то же самое для конфигурации тестирования. Если мой тестовый yml менял только имя контейнера, например,
version: '3.6'
services:
web1:
container_name: web1_test
web2:
container_name: web2_test
, и у меня уже были запущены мои веб-сервисы, то это воссоздало бы сервисы, фактически заменяя их контейнеры новыми, содержащими новый конфиг. (в этом случае новое имя). Но я бы предпочел не делать этого, было бы неплохо просто вращать их вверх и вниз, не мешая оригиналам.
Лучше было бы
version: '3.6'
services:
web1:
service_name: web1_test
web2:
service_name: web2_test
тогда я мог бы начать тестируйте версии и останавливайте их, не трогая оригиналы.
docker-compose -f docker-compose.yml -f docker-compose.test.yml up -d web1_test web2_test
Можно ли оставить исходные сервисы и запустить несколько новых тестовых экземпляров с простым наложением конфигурации?
Примечание: в настоящее время я использую docker-compose run
для удовлетворения своих потребностей. На практике я также изменяю переменные env и порты, например:
docker-compose -f Docker/docker-compose.yml -f Docker/docker-compose.dev.yml run -d --name web1_test -e VAR1=web1_test_var -p 5001:5000 web1
, поэтому я уже знаю, «как это сделать», я ищу больше, я пропускаю лучший способ выполнения sh то же самое? Было бы неплохо иметь порт, env и name в конфиге, не так ли?