1. Add driver as an option, defaulting to `docker-container`. For a
"native" build you can set it to `docker`
2. Set arch as a array of architectures to build for, defaulting to
`[ "amd64", "arm64" ]` unless you are using the docker driver in
which case we default to not setting a platform
3. Remote is now just a connection string for the remote builder
4. If remote is set, we only use it for non-local arches, if we are
only building for the local arch, we'll ignore it.
Examples:
On arm64, build for arm64 locally, amd64 remotely or
On amd64, build for amd64 locally, arm64 remotely:
```yaml
builder:
remote: ssh://docker@docker-builder
```
On arm64, build amd64 on remote,
On amd64 build locally:
```yaml
builder:
arch:
- amd64
remote:
host: ssh://docker@docker-builder
```
Build amd64 on local:
```yaml
builder:
arch:
- amd64
```
Use docker driver, building for local arch:
```yaml
builder:
driver: docker
```
15 lines
340 B
Ruby
15 lines
340 B
Ruby
class Kamal::Commands::Builder::Local < Kamal::Commands::Builder::Base
|
|
def create
|
|
docker :buildx, :create, "--name", builder_name, "--driver=#{driver}" unless docker_driver?
|
|
end
|
|
|
|
def remove
|
|
docker :buildx, :rm, builder_name unless docker_driver?
|
|
end
|
|
|
|
private
|
|
def builder_name
|
|
"kamal-local-#{driver}"
|
|
end
|
|
end
|