Skip to content

An advanced build system based on Buildkit in order to generate compact Docker images with MetaCall runtime.

License

Notifications You must be signed in to change notification settings

metacall/builder

Repository files navigation

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

About

An advanced build system based on Buildkit in order to generate compact Docker images with MetaCall runtime.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published