~/tools/docker-compose/extract-env
Docker ComposeDocker Compose Env Extractor
Извлечь все переменные окружения, используемые в docker-compose.yml.
Как это работает
Открываешь чужой docker compose файл, а там переменные окружения раскиданы по десяти сервисам вперемешку с обычными значениями. Прежде чем поднимать проект, нужно понять, какой именно .env файл собрать, иначе контейнер просто не стартанет с невнятной ошибкой про отсутствующее значение. Docker compose env extractor решает эту задачу автоматически.
Инструмент ищет в тексте все конструкции вида доллар с фигурными скобками и доллар с именем переменной без скобок, собирает уникальный список названий и выводит его отсортированным по алфавиту. Дальше остается только создать .env файл с этими ключами и подставить реальные значения.
Полезно применять этот инструмент перед первым деплоем незнакомого проекта, перед код ревью docker compose файла коллеги, или просто когда нужно быстро вспомнить, что вообще требуется для запуска стека из пяти контейнеров, который вы писали три месяца назад и уже забыли детали.
Частые вопросы
Находит ли инструмент переменные внутри значений с значением по умолчанию через двоеточие и тире?
Да, синтаксис доллар фигурная скобка имя переменной двоеточие тире значение по умолчанию распознается корректно, извлекается именно имя переменной, а не то, что идет после двоеточия.
Работает ли извлечение переменных, если docker compose файл содержит несколько сервисов?
Да, поиск идет по всему тексту файла целиком, вне зависимости от того, сколько сервисов описано и в каком месте конфига встречается переменная.
Что если одна и та же переменная используется в трех разных местах файла?
В итоговом списке она появится один раз, инструмент убирает дубликаты автоматически перед выводом результата.
Учитываются ли переменные, заданные не в блоке environment, а где то еще в конфиге?
Да, поиск идет по всему содержимому файла как по обычному тексту, а не только по блоку environment, так что переменные в volumes или image тоже будут найдены.