Как современный Docker упростил работу с compose файлами
Многих эта тема обошла стороной, дело привычки берет своё.
Я про docker-compose.yaml. Так вот, в современных дистрибутивах не обязательно называть так файл, достаточно обозвать его compose.yaml и всё будет работать. Но при условии если у тебя не допотопная ОС со старой версией docker’a.
ЧИТАТЬ ПЕРВЫМ В ТЕЛЕГРАМ ЧИТАТЬ ПЕРВЫМ В MAX
Современный docker давно перешел на compose.yaml.
docker-compose— это отдельный python-инструментdocker compose— встроенный плагин Docker CLI
Теперь docker в приоритете ищет файл compose.yaml и только потом старый docker-compose.yaml. И так и так все будет работать. Оно пока на это не ругается, но рано или поздно к этому придут.
Наверное ты уже замечал, что если в yaml указать version: 3.9 оно скажет — ты скуф ебанутый? Я пожалуй это проигнорирую.
Это нужно было указывать раньше, чтобы docker понимал какие поля разрешены и как вообще интерпретировать файл. Теперь это легаси и docker автоматически определяет версию, чтобы избавиться от зоопарка версий: v2, v2, v3.7, v3.9. Получаем один формат → одна логика → меньше гемора.
Кстати аналогичная хуйня в кубере, где версию апихи указываешь в манифестах. Если ты не знаешь как с этим работать, будет тебе боль и страдания. За эту тему поговорим отдельно.
Но опять же если у тебя древняя ОС, выбора особо не будет, придется прописывать версии и поддерживать это наследие.
Пример с version или подстава. Создавалась это не для docker compose, а для docker swarm. В version: "3" Docker Compose просто молча игнорировал: mem_limit, cpu_shares, cpus, restart_policy, depends_on. Не было ни ошибок, ни предупреждений. Просто ничего не происходило. Контейнер запускался, но не как ожидалось.
version: "3"
mem_limit: 512m
Хм… 512 говоришь, хуй те! Эй OOM давай к нам, у нас тут пациент!
version: "3" — Swarm-спека
Ну и про yaml и yml пару строк. Можно писать так и так, оба варианта равноправны. Но всё же рекомендуется yaml, потому что это полное официальное расширение, так пишется в спецификациях и документациях . Плюсом это единый стиль Kubernetes, GitHub Actions, Helm и т.п.
На сколько помню yml пошел со старых систем, когда было ограничение в 3 символа, опять же наследие прошлого.
Возможно ошибаюсь, поправьте в комментах.