Dagger
Search

docker

A collection of functions for building, saving and publishing your Docker based projects

Installation

dagger install github.com/purpleclay/daggerverse/docker@v0.4.0

Entrypoint

Return Type
Docker !
Arguments
NameTypeDescription
registryString the address of the registry to authenticate with
usernameString the username for authenticating with the registry
passwordSecret the password for authenticating with the registry
Example
func (m *myModule) example() *Docker  {
	return dag.
			Docker()
}
@function
def example() -> dag.Docker:
	return (
		dag.docker()
	)
@func()
example(): Docker {
	return dag
		.docker()
}

Types

Docker 🔗

Docker dagger module

build() 🔗

Build an image using a Dockerfile. Supports cross-compilation

Build an image using the current directory as the context: dagger call build --dir .

Build an image using cross-compilation: dagger call build --dir . --platfrom "linux/amd64,linux/arm64"

Build an image using build-args and a build target: dagger call build --dir . --args "VERSION=0.1.0" --target debug

Return Type
Build !
Arguments
NameTypeDefault ValueDescription
dirDirectory !-the path to a directory that will be used as the docker context
fileString "Dockerfile"the path to the Dockfile
args[String ! ] -a list of build arguments in the format of arg=value
targetString -the name of a target build stage
platform[String ! ] ["linux/amd64"]a list of target platforms for cross-compilation
Example
func (m *myModule) example(dir *Directory) *DockerBuild  {
	return dag.
			Docker().
			Build(dir)
}
@function
def example(dir: dagger.Directory) -> dag.DockerBuild:
	return (
		dag.docker()
		.build(dir)
	)
@func()
example(dir: Directory): DockerBuild {
	return dag
		.docker()
		.build(dir)
}

Build 🔗

DockerBuild contains an image built from the provided Dockerfile, it serves as an intermediate type for chaining other functions. If multiple platforms were provided, then multiple images will exist

save() 🔗

Save the built image as a tarball ready for exporting

dagger call build --dir . save --name awesome_service

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
nameString "image"a name for the exported tarball, will automatically be suffixed by its platform (e.g. image_linux_amd64.)
Example
func (m *myModule) example(dir *Directory) *Directory  {
	return dag.
			Docker().
			Build(dir).
			Save()
}
@function
def example(dir: dagger.Directory) -> dagger.Directory:
	return (
		dag.docker()
		.build(dir)
		.save()
	)
@func()
example(dir: Directory): Directory {
	return dag
		.docker()
		.build(dir)
		.save()
}

image() 🔗

Retrieves a built image for a given platform

dagger call build --dir . image

Cherry-pick a single image from cross compilation: dagger call build --dir . --platform "linux/amd64,linux/arm64" image --platform linux/arm64

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
platformString "linux/amd64"the platform of the docker image to return
Example
func (m *myModule) example(dir *Directory) *Container  {
	return dag.
			Docker().
			Build(dir).
			Image()
}
@function
def example(dir: dagger.Directory) -> dagger.Container:
	return (
		dag.docker()
		.build(dir)
		.image()
	)
@func()
example(dir: Directory): Container {
	return dag
		.docker()
		.build(dir)
		.image()
}

publish() 🔗

Publish the built image to a target registry

Publish a built image to the ttl.sh registry: dagger call build --dir . publish --ref ttl.sh/purpleclay-test

Publish a cross-compiled image to the ttl.sh registry with multiple tags: dagger call build --dir . --platform "linux/amd64,linux/arm64" publish --ref ttl.sh/purpleclay-test --tags "latest,0.1.0"

Return Type
String !
Arguments
NameTypeDefault ValueDescription
refString !-a fully qualified image reference without tags
tags[String ! ] ["latest"]a list of tags that should be published with the image
Example
func (m *myModule) example(ctx context.Context, dir *Directory, ref string) string  {
	return dag.
			Docker().
			Build(dir).
			Publish(ctx, ref)
}
@function
async def example(dir: dagger.Directory, ref: str) -> str:
	return await (
		dag.docker()
		.build(dir)
		.publish(ref)
	)
@func()
async example(dir: Directory, ref: string): Promise<string> {
	return dag
		.docker()
		.build(dir)
		.publish(ref)
}