Что я хочу сделать, так это разделить свои настройки, специфичные для моей среды, в override.yml, ничего особенного ... однако мои переопределения будут точно такими же для каждой развернутой службы, и я хочу избежать необходимости записывать одно и то же переопределение для каждого единый сервис (и постоянно добавляйте новые разделы к переопределению по мере появления новых сервисов).
Вместо этого я хотел бы создать одно определение, в котором говорится «применить это переопределение к каждой отдельной службе». Существует ли уже такая концепция, которую мне, возможно, не хватает?
Пример ...
docker-compose.yml:
aservice:
image: whatever1
environment:
FOO: BAR
другой docker-compose.yml:
anotherservice:
image: whatever2
мой docker-compose.override.yml:
<magickeyword>:
environment:
FLIBBLE: flobble
dns:
- server1
- server2
Теперь каждая развернутая служба будет иметь DNS server1 и server2 и переменную среды FLIBBLE.
Я понимаю, что мог бы сделать это, если бы все службы расширяли одну и ту же базовую службу, и я мог бы применить к ней переопределение, но есть ли способ установить глобальное переопределение / переопределение по умолчанию без общего расширения?
На данный момент у меня есть хак, который включает в себя сгенерированное сканирование переопределения для любых определенных служб и создание файла переопределения на лету, но это похоже на вариант использования, с которым я не могу быть первым, с кем столкнулся, поэтому задумался, возможно, я просто упустили очевидное решение этой проблемы в compose.
Вы можете просто иметь файл base.yml
в каждой папке проекта со службой base
содержащей только ваш ключ environment
, а затем заставить каждую службу расширять службу base
.
Это больше не является хорошим решением, учитывая, что extends:
удаляется в 3.x https://github.com/moby/moby/issues/31101
@saml проверьте https://github.com/docker/compose/pull/5140
Самый полезный комментарий
@saml проверьте https://github.com/docker/compose/pull/5140