如何使用docker-compose启用BuildKit?

Arc*_*ano 5 docker docker-compose docker-buildkit

export DOCKER_BUILDKIT=1之前尝试过docker-compose build,但没有看到预期的BuildKit输出。它应该工作吗?

BMi*_*tch 63

对 BuildKit 的支持刚刚在docker-compose 1.25.0 中发布。启用:

export DOCKER_BUILDKIT=1 # or configure in daemon.json
export COMPOSE_DOCKER_CLI_BUILD=1
Run Code Online (Sandbox Code Playgroud)

在 shell 中设置这些变量后,您现在可以docker-compose build使用 BuildKit运行。

在 Windows 中,您可以在控制台中执行:

setx DOCKER_BUILDKIT 1 # or configure in daemon.json
setx COMPOSE_DOCKER_CLI_BUILD 1
Run Code Online (Sandbox Code Playgroud)

之后需要重新启动您的控制台

  • 这样很不方便,可惜我们不能通过yml文件来管理 (3认同)
  • 这仍然是正确的答案吗?这与“docker compose”和“docker-compose”有何不同? (2认同)

veb*_*ben 12

您可以使用此命令告诉docker-compose在执行构建时使用Docker CLI

COMPOSE_DOCKER_CLI_BUILD=1 docker-compose build
Run Code Online (Sandbox Code Playgroud)

您应该会像往常一样看到相同的构建,但带有以下警告:

警告:本机构建是一项实验性功能,可能随时更改

您可以像这样对 CLI 进行参数化以使用BuildKit而不是默认构建器:

COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose build
Run Code Online (Sandbox Code Playgroud)

视窗版本:

set "COMPOSE_DOCKER_CLI_BUILD=1" & set "DOCKER_BUILDKIT=1" & docker-compose build
Run Code Online (Sandbox Code Playgroud)

您还可以全局启用BuildKit,编辑/etc/docker/daemon.json文件,添加:

{ "features": { "buildkit": true } }
Run Code Online (Sandbox Code Playgroud)

更多信息:https : //docs.docker.com/develop/develop-images/build_enhancements/


Ale*_*kin 8

Docker Compose v2 默认支持 BuildKit:链接

虽然大多数迁移应该很简单,但 Compose v2 确实引入了一些可能影响特定用例的重大更改:

  • 现在创建的容器名称中使用连字符而不是下划线。
  • docker compose build默认使用 BuildKit 构建。
  • 一些已弃用的命令标志已被删除。