A Build is a compiled version of the code for each Service of an App.
Convox uses docker
to compile code into a Build.
You can define the location to build for each Service in convox.yml
.
services:
api:
build: ./api
web:
build: ./web
manifest: Dockerfile.production
$ convox build -a myapp
Packaging source... OK
Uploading source... OK
Starting build... OK
...
Build: BABCDEFGHI
Release: RBCDEFGHIJ
Every time a Build is created a new Release is created that references the Build.
$ convox builds -a myapp
ID STATUS RELEASE STARTED ELAPSED
BABCDEFGHI complete RBCDEFGHIJ 1 minute ago 25s
$ convox builds info BABCDEFGHI -a myapp
ID BABCDEFGHI
Status complete
Release RBCDEFGHIJ
Description
Started 1 minute ago
Elapsed 25s
$ convox builds logs BABCDEFGHI -a myapp
Sending build context to Docker daemon 4.2MB
Step 1/34 : FROM golang AS development
...
$ convox builds export BABCDEFGHI -a myapp -f /tmp/build.tgz
Exporting build... OK
convox builds import -a myapp2 -f /tmp/build.tgz
Importing a Build creates a new Release that references the Build.
From version 3.11.0 onward, Convox uses buildkit to build and push images. Buildkit allows us to specify a caching path in remote repositories to store/fetch layers that have already been created. Unfortunately, the only rack registries that support such feature so far are Azure and DigitalOcean(DO racks have a built-in registry).