Skip to content

Latest commit

 

History

History
107 lines (72 loc) · 2.39 KB

README.md

File metadata and controls

107 lines (72 loc) · 2.39 KB

MetaCall Builder

Advanced builder based on Buildkit for selectively build compact Docker images selecting the only required languages.

Build

go build cmd/main.go

Run

./main runtime py node rb | buildctl build --output type=docker,name=imagename | docker load

if you want to push the image to a registry, you can use the following command:

./main runtime py node rb | buildctl build --output type=image,name=docker.io/ashpect/testimage,push=true

After getting the llb, you can use various buildkit args to specify output

Run with buildctl-daemonless

Linux Requirements:

MacOs:

For MacOs, you can use install buildkit using brew and lima for rootless containers, and run the script after the installation.

$ brew install buildkit
$ brew install lima

Using Docker:

If you don't have buildkit installed, you can use the docker image to run the buildkit daemon.

docker run --rm --privileged -d --name buildkit moby/buildkit

Export the environment variable BUILDKIT_HOST to point to the buildkit daemon.

export BUILDKIT_HOST=docker-container://buildkit
./main py node rb | ./hack/buildctl.sh build --output type=docker,name=imagename | docker load

Run with docker

Use the environment variable BUILDER_ARGS for passing the arguments.

With daemon:

BUILDER_ARGS="runtime py" docker compose up --exit-code-from client client

Rootless:

BUILDER_ARGS="runtime node" docker compose up --exit-code-from rootless rootless

You can also run the builder binary only:

BUILDER_ARGS="runtime rb" docker compose up --exit-code-from binary binary

Linter

docker run --rm -v $(pwd):/app -w /app golangci/golangci-lint:v1.59.1 golangci-lint run -v --enable-all

Testing

For testing in rootless mode:

./test/test.sh rootless

For testing in daemon mode:

./test/test.sh client

Useful Tools

Dive can be used to analyze each layer of the generated image

dive <your-image-tag>

This opens up a window where in we can see changes in each layer of the image according to preferences.

Ctrl + L : To show only layer changes

Tab : To switch view from layers to current layer contents