1 stable release

1.2.0 Nov 20, 2023

#405 in Unix APIs

MIT license

18KB
295 lines

buildxargs ~ xargs for BuildKit with docker buildx bake

An efficient way of running multiple concurrent docker build jobs on the BuildKit toolkit.

# export DOCKER_HOST=ssh://...
❯ buildxargs <<EOF
docker build --build-arg ARGs='--format mp4 -- https://www.youtube.com/watch?v=Hj7LwZqTflc' --output=$HOME https://github.com/fenollp/dockerhost-tools--yt-dlp.git
docker build -o=. --platform=local --build-arg PREBUILT=1 https://github.com/FuzzyMonkeyCo/monkey.git
docker build --platform=local -o . https://github.com/docker/buildx.git
EOF

This is equivalent to executing the following

 export DOCKER_BUILDKIT=1
 xargs -P0 -o -I{} {} <<EOF
docker build ...
docker build ...
...
docker build ...
EOF

Usage

buildxargs 1.0.0
Pierre Fenoll <pierrefenoll@gmail.com>
xargs for BuildKit with docker buildx bake

USAGE:
    buildxargs [OPTIONS]

OPTIONS:
        --debug                  Print more things
    -f, --file <FILE>            Read commands from file [default: -]
    -h, --help                   Print help information
        --no-cache               Do not use cache when building the image
        --print                  Print the options without building
        --progress <PROGRESS>    Set type of progress output ("plain", "tty") [default: auto]
        --pull                   Always attempt to pull all referenced images
    -V, --version                Print version information

Installing

cargo install --locked --git https://github.com/fenollp/buildxargs
# also: install Docker ≥ 18.09

See also

My blog post about this.

Related:

  • My vi[sual]xargs tool
  • fmtd and a lib for piping data in & out of docker build tasks

TODO

  • Spawn tasks in background, attach to display logs, cancel.
OPTIONS:
        --attach ssh HOST -t /usr/bin/htop + replay daemon logs
        --background Spawns calls using bg daemon and logs text back for log replain

Dependencies

~3–13MB
~143K SLoC