Вывод итоговой конфигурации без сборки
В этом завершающем шаге мы рассмотрим, как просмотреть окончательную конфигурацию, которую docker buildx bake
будет использовать для конкретной цели, включая все переопределения, применённые с помощью флага --set
, без фактического запуска сборки. Это полезно для отладки bake-файлов и понимания итоговой конфигурации перед сборкой.
Флаг --print
в команде docker buildx bake
позволяет вывести разрешённую конфигурацию в формате JSON.
Убедитесь, что находитесь в директории ~/project
.
cd ~/project
Выведем конфигурацию для цели my-app-dev
.
docker buildx bake my-app-dev --print
Эта команда выведет JSON-представление конфигурации цели my-app-dev
, полученной из файла docker-bake.hcl
.
{
"target": {
"my-app-dev": {
"dockerfile": "Dockerfile",
"context": ".",
"tags": ["my-app:dev"]
}
}
}
Теперь посмотрим, как флаг --set
влияет на выводимую конфигурацию. Выведем конфигурацию для my-app-dev
, переопределив тег на my-app:testing
.
docker buildx bake my-app-dev --set my-app-dev.tags=my-app:testing --print
Обратите внимание на вывод. Атрибут tags
в JSON-выводе теперь должен отражать переопределённое значение.
{
"target": {
"my-app-dev": {
"dockerfile": "Dockerfile",
"context": ".",
"tags": ["my-app:testing"]
}
}
}
Аналогично можно вывести конфигурацию для цели my-app-prod
и переопределить её аргумент сборки.
docker buildx bake my-app-prod --set my-app-prod.args.BUILD_ENV=staging --print
JSON-вывод для цели my-app-prod
покажет args
с переопределённым значением BUILD_ENV
.
{
"target": {
"my-app-prod": {
"dockerfile": "Dockerfile",
"context": ".",
"tags": ["my-app:prod"],
"args": {
"BUILD_ENV": "staging"
}
}
}
}
Флаг --print
является ценным инструментом для проверки конфигураций bake-файлов и понимания того, как применяются переопределения перед запуском потенциально длительных процессов сборки.