Boxit is a distributed container image builder that can dynamically produce container images from a set of dependencies given as input.
Supported platforms are currently:
- jvm
Source code can be compiled with Go 1.14, using the command:
make
This will produce two binaries:
boxit-server
: the server part of the distributed builderboxit
: the client part
Boxit needs a registry to host the produced images.
You can either run a local registry or use an existing one (e.g. docker hub).
To run a local registry using docker, you can run:
docker run -d -p "5000:5000" --name "registry" registry:2
The server can be simply executed via:
./boxit-server
It runs on port 8080
and points by default to the registry on localhost:5000
(insecure).
If you want to use a different registry, make sure you're logged in:
docker login docker.io
# follow instructions
Then start the server with:
./boxit-server --registry docker.io/yourid --insecure=false
The boxit
client can be now used to ask the server to create new images (uses server on http://localhost:8080
by default):
./boxit create -d mvn:org.apache.camel:camel-core:3.5.0./boxit create -d mvn:org.apache.camel:camel-core:3.5.0 -d mvn:org.apache.camel:camel-timer:3.5.0
A possible output may be: localhost:5000/boxit/vb7uwws6n2mwbc3h6fbctwuhkmmmh2cl6a2v45r5g23rbcsndcuha:latest
.
A new image will be created if not already present. The ID of the image containing the dependencies is always printed.
The first time the command is executed, it will take several seconds to have an image ready. Once the image is build, subsequent calls will be completed immediately.