79

I tried export DOCKER_BUILDKIT=1 before a docker-compose build command and I did not see the expected BuildKit output. What did I miss?

3 Answers 3

111

Support for BuildKit was just released in docker-compose 1.25.0. To enable:

export DOCKER_BUILDKIT=1 # or configure in daemon.json
export COMPOSE_DOCKER_CLI_BUILD=1

With those variables set in your shell, you can now run docker-compose build using BuildKit.

In windows you can execute in your console:

setx DOCKER_BUILDKIT 1 # or configure in daemon.json
setx COMPOSE_DOCKER_CLI_BUILD 1

after will need restart your console

Sign up to request clarification or add additional context in comments.

4 Comments

Is this still the right answer? How does this play with docker compose vs docker-compose?
This does not work when using sudo. How can I set COMPOSE_DOCKER_CLI_BUILD globally instead of an environment variable?
@AndyRay iirc, docker compose(without the hyphen) is a sort of a plugin that docker made to tackle "how to deploy structure prepped by docker-compose file on AWS's ECS", as opposed to Amazon's take on that is "docker-compose is an implementation detail for development environment, which we are not going to cater to. We have ECS CLI (or better yet, the latest Copilot)".
This is very inconvenient, it's a pity that we can't manage it via yml file
35

You can use this command to tell docker-compose to use the Docker CLI when executing a build.

COMPOSE_DOCKER_CLI_BUILD=1 docker-compose build

You should see the same build as usual, but with this warning:

WARNING: Native build is an experimental feature and could change at any time

And you can go like that to parametrize the CLI to use BuildKit instead of the default builder:

COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose build

Windows version:

set "COMPOSE_DOCKER_CLI_BUILD=1" & set "DOCKER_BUILDKIT=1" & docker-compose build

You can also enable BuildKit globally, editing /etc/docker/daemon.json file, adding:

{ "features": { "buildkit": true } }

For more informations: https://docs.docker.com/develop/develop-images/build_enhancements/

Comments

12

Docker Compose v2 supports BuildKit by default: link

While most migrations should be straightforward, Compose v2 does introduce a few breaking changes which could impact specific use cases:

  • Containers are now created with hyphens in their names instead of underscores.
  • docker compose build builds with BuildKit by default.
  • Some deprecated command flags have been removed.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.