Using Podman, Compose and BuildKit
Для сборки Docker Compose-проекта без Docker используются Podman, Docker Compose CLI и BuildKit.
Проблемы
- Podman предлагает два варианта:
– официальныйdocker-compose
, но без BuildKit (нетadditional_contexts
);
–podman-compose
, но без!reset
,configs
и т.д. - Постоянно догонять новые фичи Docker Compose не хочется.
Решение
-
Запускаем официальный
docker-compose
через Podmanpacman -S docker-compose docker-buildx systemctl --user start podman.socket docker context create podman --docker host=unix://$XDG_RUNTIME_DIR/podman/podman.sock docker context use podman
Compose автоматически поднимает контейнер
buildx_buildkit_default
. -
Собственный BuildKit-демон (systemd)
pacman -S buildkit systemctl --user start buildkit.service docker buildx create --name local unix://$XDG_RUNTIME_DIR/buildkit/rootless docker buildx use local
-
Убираем демон: Bake → Bakah
docker buildx bake --print >bake.json
– экспорт в JSON.- Bakah превращает JSON в вызовы Buildah (без демона).
docker buildx bake --print >bake.json bakah --file bake.json
Bakah пока без HCL, переменных и прочих продвинутых фич, но достаточно для сложных проектов.