diff --git a/docs/contributing/README.md b/docs/contributing/README.md index d419e52c14cd6..fb2e7980614b5 100644 --- a/docs/contributing/README.md +++ b/docs/contributing/README.md @@ -6,5 +6,6 @@ * (Optional) [Configure project for IDE](set-up-ide.md) * [Configure Git for contributing](set-up-git.md) * [Work with a development container](set-up-dev-env.md) + * [Containerized build and cross compilation](ctn-build.md) * [Run tests and test documentation](test.md) * [Debugging the daemon](debug.md) diff --git a/docs/contributing/ctn-build.md b/docs/contributing/ctn-build.md new file mode 100644 index 0000000000000..0f628bb843655 --- /dev/null +++ b/docs/contributing/ctn-build.md @@ -0,0 +1,35 @@ +The `Dockerfile` supports building and cross compiling docker daemon and extra +tools using [Docker Buildx](https://github.com/docker/buildx) and [BuildKit](https://github.com/moby/buildkit). +A [bake definition](https://github.com/docker/buildx/blob/master/docs/reference/buildx_bake.md) +named `docker-bake.hcl` is in place to ease the build process: + +```shell +# build binaries for the current host platform +# output to ./bundles/binary by default +docker buildx bake + +# build binaries for the current host platform +# output to ./bin +DESTDIR=./bin docker buildx bake + +# build dynamically linked binaries +# output to ./bundles/dynbinary by default +DOCKER_LINKMODE=dynamic docker buildx bake + +# build binaries for all supported platforms +docker buildx bake binary-cross + +# build binaries for a specific platform +docker buildx bake --set *.platform=linux/arm64 + +# build all for the current host platform (binaries + containerd, runc, tini, ...) +# output to ./bundles/all by default +docker buildx bake all + +# build all for the current host platform +# output to ./bin +DESTDIR=./bin docker buildx bake all + +# build all for all supported platforms +docker buildx bake all-cross +```