Обложка статьи docker-compose-toml

Docker compose на TOML

Тот, кто работал с Docker compose / манифестами k8s, скажет, что формат YAML далёк от идеала. И ладно ещё, если вы юзаете IDE, там хоть плагины есть, которые пофиксят отступы. А что делать тем, кто решил по быстрому отредактировать файл на сервере в «nano»?

В общем, хватит это терпеть, представляю своё решение проблемы: адаптер для Docker compose, который превращает .toml в .yaml файл.

Ознакомиться можно тут*

Использование

Адаптер очень прост в использовании, достаточно просто создать docker-compose.toml файл и записать в него 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"

После чего запускаем наш скрипт, без аргументов, просто запуск:

Bash
docker-compose-toml

[Ну или через python, если не билдили и не устанавливали system-wide. В общем, разберётесь]

И, хопа, магия. В наш терминал выводится yaml представление нашего TOML файла. Это так называемый режим проверки, чтобы вы могли ознакомиться с тем, что по итогу попадёт в YAML файл.

Оцените, насколько TOML читается легче, чем YAML. Все ровно, и там где должно быть и главное переучиватся не надо.

Также для CI/CD будет удобно, что скрипт сам передаёт все флаги настоящему docker compose. Дополнительно он создает docker-compose.yaml файл и записывает в него yaml представление.

Bash
docker-compose-toml up

Как вы понимаете, эта команда полностью равна команде:

Bash
docker compose up 

Иии… это работает.

[ На момент написания статьи логика для работы с флагами -f и —file не создана, так что они не будут работать ]

В общем, напрягайте свои ansible роли*, хватит терпеть YAML. Пора переходить на что-то новое.

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

Мы в Telegram

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

More posts