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.3.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
dagger -m github.com/purpleclay/daggerverse/docker@c61b11c8575c4bc45a1b5095df9458a81a1cfcc4 call \
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

Examples:

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@c61b11c8575c4bc45a1b5095df9458a81a1cfcc4 call \
 build --dir DIR_PATH --file string
func (m *myModule) example(dir *Directory, file string) *DockerBuild  {
	return dag.
			Docker().
			Build(dir, file)
}
@function
def example(dir: dagger.Directory, file: str) -> dag.DockerBuild:
	return (
		dag.docker()
		.build(dir, file)
	)
@func()
example(dir: Directory, file: string): DockerBuild {
	return dag
		.docker()
		.build(dir, file)
}

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

Examples:

Save the tarball with the given name

$ 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@c61b11c8575c4bc45a1b5095df9458a81a1cfcc4 call \
 build --dir DIR_PATH --file string \
 save
func (m *myModule) example(dir *Directory, file string) *Directory  {
	return dag.
			Docker().
			Build(dir, file).
			Save()
}
@function
def example(dir: dagger.Directory, file: str) -> dagger.Directory:
	return (
		dag.docker()
		.build(dir, file)
		.save()
	)
@func()
example(dir: Directory, file: string): Directory {
	return dag
		.docker()
		.build(dir, file)
		.save()
}

publish() 🔗

Publish the built image to a target registry

Examples:

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@c61b11c8575c4bc45a1b5095df9458a81a1cfcc4 call \
 build --dir DIR_PATH --file string \
 publish --ref string
func (m *myModule) example(ctx context.Context, dir *Directory, file string, ref string) string  {
	return dag.
			Docker().
			Build(dir, file).
			Publish(ctx, ref)
}
@function
async def example(dir: dagger.Directory, file: str, ref: str) -> str:
	return await (
		dag.docker()
		.build(dir, file)
		.publish(ref)
	)
@func()
async example(dir: Directory, file: string, ref: string): Promise<string> {
	return dag
		.docker()
		.build(dir, file)
		.publish(ref)
}