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
dagger -m github.com/purpleclay/daggerverse/docker@43c1c55dadf15afc9ba401dc59e04baaa3802cca call \
 build --dir DIR_PATH \
 save
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
dagger -m github.com/purpleclay/daggerverse/docker@43c1c55dadf15afc9ba401dc59e04baaa3802cca call \
 build --dir DIR_PATH \
 save
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
dagger -m github.com/purpleclay/daggerverse/docker@43c1c55dadf15afc9ba401dc59e04baaa3802cca call \
 build --dir DIR_PATH \
 image
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
dagger -m github.com/purpleclay/daggerverse/docker@43c1c55dadf15afc9ba401dc59e04baaa3802cca call \
 build --dir DIR_PATH \
 publish --ref string
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)
}