Тот, кто работал с Docker compose / манифестами k8s, скажет, что формат YAML далёк от идеала. И ладно ещё, если вы юзаете IDE, там хоть плагины есть, которые пофиксят отступы. А что делать тем, кто решил по быстрому отредактировать файл на сервере в «nano»?
В общем, хватит это терпеть, представляю своё решение проблемы: адаптер для Docker compose, который превращает .toml в .yaml файл.
Использование
Адаптер очень прост в использовании, достаточно просто создать docker-compose.toml файл и записать в него toml представление того, что должно быть в компоузе. Минимально жизнеспособный файл прилагаю ниже:
[services]
[services.db]
image = "postgres:latest"
networks = ["test"]
ports = ["5433:5432"]
environment = [
"POSTGRES_PASSWORD=7636feeffeef",
"POSTGRES_USER=admen",
"POSTGRES_DB=nanofh",
"TEST=yeah"
]
[networks]
[networks.test]
driver = "bridge"После чего запускаем наш скрипт, без аргументов, просто запуск:
docker-compose-toml[Ну или через python, если не билдили и не устанавливали system-wide. В общем, разберётесь]
И, хопа, магия. В наш терминал выводится yaml представление нашего TOML файла. Это так называемый режим проверки, чтобы вы могли ознакомиться с тем, что по итогу попадёт в YAML файл.

Оцените, насколько TOML читается легче, чем YAML. Все ровно, и там где должно быть и главное переучиватся не надо.
Также для CI/CD будет удобно, что скрипт сам передаёт все флаги настоящему docker compose. Дополнительно он создает docker-compose.yaml файл и записывает в него yaml представление.
docker-compose-toml upКак вы понимаете, эта команда полностью равна команде:
docker compose up Иии… это работает.
[ На момент написания статьи логика для работы с флагами -f и —file не создана, так что они не будут работать ]

В общем, напрягайте свои ansible роли*, хватит терпеть YAML. Пора переходить на что-то новое.
*Проект находится в стадии концепта, и смысл его существования — это передать идею, а не использование на реальных проектах. Проект будет обновляться, и, возможно, будет полностью переписан на Go или Rust. Буду рад любым pull requests, да и issues’ам тоже буду рад.


Добавить комментарий