Dagger
Search

engine-dev

Creates a complete end-to-end build environment with CLI and engine for interactive testing

Installation

dagger install github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33

Entrypoint

Return Type
EngineDev !
Arguments
NameTypeDefault ValueDescription
sourceDirectory -No description provided
subnetNumberInteger !89A configurable part of the IP subnet managed by the engine Change this to allow nested dagger engines
clientDockerConfigSecret -A docker config file with credentials to install on clients, to ensure they can access private registries
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer
func (m *MyModule) Example(subnetNumber int) *dagger.EngineDev  {
	return dag.
			EngineDev(subnetNumber)
}
@function
def example(subnet_number: int, ) -> dagger.EngineDev:
	return (
		dag.engine_dev(subnet_number)
	)
@func()
example(subnetNumber: number, ): EngineDev {
	return dag
		.engineDev(subnetNumber)
}

Types

EngineDev 🔗

source() 🔗

Return Type
Directory !
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer source
func (m *MyModule) Example(subnetNumber int) *dagger.Directory  {
	return dag.
			EngineDev(subnetNumber).
			Source()
}
@function
def example(subnet_number: int, ) -> dagger.Directory:
	return (
		dag.engine_dev(subnet_number)
		.source()
	)
@func()
example(subnetNumber: number, ): Directory {
	return dag
		.engineDev(subnetNumber)
		.source()
}

clientDockerConfig() 🔗

Return Type
Secret !
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer client-docker-config
func (m *MyModule) Example(subnetNumber int) *dagger.Secret  {
	return dag.
			EngineDev(subnetNumber).
			ClientDockerConfig()
}
@function
def example(subnet_number: int, ) -> dagger.Secret:
	return (
		dag.engine_dev(subnet_number)
		.client_docker_config()
	)
@func()
example(subnetNumber: number, ): Secret {
	return dag
		.engineDev(subnetNumber)
		.clientDockerConfig()
}

networkCidr() 🔗

Return Type
String !
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer network-cidr
func (m *MyModule) Example(ctx context.Context, subnetNumber int) string  {
	return dag.
			EngineDev(subnetNumber).
			NetworkCidr(ctx)
}
@function
async def example(subnet_number: int, ) -> str:
	return await (
		dag.engine_dev(subnet_number)
		.network_cidr()
	)
@func()
async example(subnetNumber: number, ): Promise<string> {
	return dag
		.engineDev(subnetNumber)
		.networkCidr()
}

incrementSubnet() 🔗

Return Type
EngineDev !
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer increment-subnet
func (m *MyModule) Example(subnetNumber int) *dagger.EngineDev  {
	return dag.
			EngineDev(subnetNumber).
			IncrementSubnet()
}
@function
def example(subnet_number: int, ) -> dagger.EngineDev:
	return (
		dag.engine_dev(subnet_number)
		.increment_subnet()
	)
@func()
example(subnetNumber: number, ): EngineDev {
	return dag
		.engineDev(subnetNumber)
		.incrementSubnet()
}

withBuildkitConfig() 🔗

Return Type
EngineDev !
Arguments
NameTypeDefault ValueDescription
keyString !-No description provided
valueString !-No description provided
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer with-buildkit-config --key string --value string
func (m *MyModule) Example(subnetNumber int, key string, value string) *dagger.EngineDev  {
	return dag.
			EngineDev(subnetNumber).
			WithBuildkitConfig(key, value)
}
@function
def example(subnet_number: int, key: str, value: str) -> dagger.EngineDev:
	return (
		dag.engine_dev(subnet_number)
		.with_buildkit_config(key, value)
	)
@func()
example(subnetNumber: number, key: string, value: string): EngineDev {
	return dag
		.engineDev(subnetNumber)
		.withBuildkitConfig(key, value)
}

withRace() 🔗

Return Type
EngineDev !
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer with-race
func (m *MyModule) Example(subnetNumber int) *dagger.EngineDev  {
	return dag.
			EngineDev(subnetNumber).
			WithRace()
}
@function
def example(subnet_number: int, ) -> dagger.EngineDev:
	return (
		dag.engine_dev(subnet_number)
		.with_race()
	)
@func()
example(subnetNumber: number, ): EngineDev {
	return dag
		.engineDev(subnetNumber)
		.withRace()
}

withLogLevel() 🔗

Return Type
EngineDev !
Arguments
NameTypeDefault ValueDescription
levelString !-No description provided
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer with-log-level --level string
func (m *MyModule) Example(subnetNumber int, level string) *dagger.EngineDev  {
	return dag.
			EngineDev(subnetNumber).
			WithLogLevel(level)
}
@function
def example(subnet_number: int, level: str) -> dagger.EngineDev:
	return (
		dag.engine_dev(subnet_number)
		.with_log_level(level)
	)
@func()
example(subnetNumber: number, level: string): EngineDev {
	return dag
		.engineDev(subnetNumber)
		.withLogLevel(level)
}

playground() 🔗

Build an ephemeral environment with the Dagger CLI and engine built from source, installed and ready to use

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
baseContainer -Build from a custom base image
gpuSupportBoolean -Enable experimental GPU support
sharedCacheBoolean -Share cache globally
metricsBoolean -No description provided
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer playground
func (m *MyModule) Example(subnetNumber int) *dagger.Container  {
	return dag.
			EngineDev(subnetNumber).
			Playground()
}
@function
def example(subnet_number: int, ) -> dagger.Container:
	return (
		dag.engine_dev(subnet_number)
		.playground()
	)
@func()
example(subnetNumber: number, ): Container {
	return dag
		.engineDev(subnetNumber)
		.playground()
}

container() 🔗

Build the engine container

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
platformScalar -No description provided
imageEnum !"ALPINE"No description provided
gpuSupportBoolean -No description provided
versionString -No description provided
tagString -No description provided
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer container
func (m *MyModule) Example(subnetNumber int, image ) *dagger.Container  {
	return dag.
			EngineDev(subnetNumber).
			Container(image)
}
@function
def example(subnet_number: int, image: ) -> dagger.Container:
	return (
		dag.engine_dev(subnet_number)
		.container(image)
	)
@func()
example(subnetNumber: number, image: ): Container {
	return dag
		.engineDev(subnetNumber)
		.container(image)
}

service() 🔗

Create a test engine service

Return Type
Service !
Arguments
NameTypeDefault ValueDescription
nameString !-No description provided
imageEnum !"ALPINE"No description provided
gpuSupportBoolean -No description provided
sharedCacheBoolean -No description provided
metricsBoolean -No description provided
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer service --name string
func (m *MyModule) Example(subnetNumber int, name string, image ) *dagger.Service  {
	return dag.
			EngineDev(subnetNumber).
			Service(name, image)
}
@function
def example(subnet_number: int, name: str, image: ) -> dagger.Service:
	return (
		dag.engine_dev(subnet_number)
		.service(name, image)
	)
@func()
example(subnetNumber: number, name: string, image: ): Service {
	return dag
		.engineDev(subnetNumber)
		.service(name, image)
}

installClient() 🔗

Configure the given client container so that it can connect to the given engine service

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
clientContainer !-The client container to configure
serviceService -The engine service to bind
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer install-client --client IMAGE:TAG
func (m *MyModule) Example(subnetNumber int, client *dagger.Container) *dagger.Container  {
	return dag.
			EngineDev(subnetNumber).
			InstallClient(client)
}
@function
def example(subnet_number: int, client: dagger.Container) -> dagger.Container:
	return (
		dag.engine_dev(subnet_number)
		.install_client(client)
	)
@func()
example(subnetNumber: number, client: Container): Container {
	return dag
		.engineDev(subnetNumber)
		.installClient(client)
}

introspectionJson() 🔗

Introspect the engine API schema, and return it as a json-encoded file. This file is used by SDKs to generate clients.

Return Type
File !
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer introspection-json
func (m *MyModule) Example(subnetNumber int) *dagger.File  {
	return dag.
			EngineDev(subnetNumber).
			IntrospectionJson()
}
@function
def example(subnet_number: int, ) -> dagger.File:
	return (
		dag.engine_dev(subnet_number)
		.introspection_json()
	)
@func()
example(subnetNumber: number, ): File {
	return dag
		.engineDev(subnetNumber)
		.introspectionJson()
}

graphqlSchema() 🔗

Introspect the engine API schema, and return it as a graphql schema

Return Type
File !
Arguments
NameTypeDefault ValueDescription
versionString -No description provided
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer graphql-schema
func (m *MyModule) Example(subnetNumber int) *dagger.File  {
	return dag.
			EngineDev(subnetNumber).
			GraphqlSchema()
}
@function
def example(subnet_number: int, ) -> dagger.File:
	return (
		dag.engine_dev(subnet_number)
		.graphql_schema()
	)
@func()
example(subnetNumber: number, ): File {
	return dag
		.engineDev(subnetNumber)
		.graphqlSchema()
}

introspectionTool() 🔗

Build the introspect tool which introspects the engine API

Return Type
File !
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer introspection-tool
func (m *MyModule) Example(subnetNumber int) *dagger.File  {
	return dag.
			EngineDev(subnetNumber).
			IntrospectionTool()
}
@function
def example(subnet_number: int, ) -> dagger.File:
	return (
		dag.engine_dev(subnet_number)
		.introspection_tool()
	)
@func()
example(subnetNumber: number, ): File {
	return dag
		.engineDev(subnetNumber)
		.introspectionTool()
}

configSchema() 🔗

Generate the json schema for a dagger config file Currently supported: “dagger.json”, “engine.json”

Return Type
File !
Arguments
NameTypeDefault ValueDescription
filenameString !-No description provided
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer config-schema --filename string
func (m *MyModule) Example(subnetNumber int, filename string) *dagger.File  {
	return dag.
			EngineDev(subnetNumber).
			ConfigSchema(filename)
}
@function
def example(subnet_number: int, filename: str) -> dagger.File:
	return (
		dag.engine_dev(subnet_number)
		.config_schema(filename)
	)
@func()
example(subnetNumber: number, filename: string): File {
	return dag
		.engineDev(subnetNumber)
		.configSchema(filename)
}

generate() 🔗

Generate any engine-related files Note: this is codegen of the ‘go generate’ variety, not ‘dagger develop’

Return Type
Changeset !
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer generate
func (m *MyModule) Example(subnetNumber int) *dagger.Changeset  {
	return dag.
			EngineDev(subnetNumber).
			Generate()
}
@function
def example(subnet_number: int, ) -> dagger.Changeset:
	return (
		dag.engine_dev(subnet_number)
		.generate()
	)
@func()
example(subnetNumber: number, ): Changeset {
	return dag
		.engineDev(subnetNumber)
		.generate()
}

releaseDryRun() 🔗

Return Type
Void !
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer release-dry-run
func (m *MyModule) Example(ctx context.Context, subnetNumber int)   {
	return dag.
			EngineDev(subnetNumber).
			ReleaseDryRun(ctx)
}
@function
async def example(subnet_number: int, ) -> None:
	return await (
		dag.engine_dev(subnet_number)
		.release_dry_run()
	)
@func()
async example(subnetNumber: number, ): Promise<void> {
	return dag
		.engineDev(subnetNumber)
		.releaseDryRun()
}

publish() 🔗

Publish all engine images to a registry

Return Type
Void !
Arguments
NameTypeDefault ValueDescription
imageString !"ghcr.io/dagger/engine"Image target to push to
tag[String ! ] !-List of tags to use
dryRunBoolean -No description provided
registryUsernameString -No description provided
registryPasswordSecret -No description provided
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer publish --image string --tag string1 --tag string2
func (m *MyModule) Example(ctx context.Context, subnetNumber int, image string, tag []string)   {
	return dag.
			EngineDev(subnetNumber).
			Publish(ctx, image, tag)
}
@function
async def example(subnet_number: int, image: str, tag: List[str]) -> None:
	return await (
		dag.engine_dev(subnet_number)
		.publish(image, tag)
	)
@func()
async example(subnetNumber: number, image: string, tag: string[]): Promise<void> {
	return dag
		.engineDev(subnetNumber)
		.publish(image, tag)
}

testDump() 🔗

Run specific tests while curling (pprof) dumps from their associated dev engine: defaults to heap dumps, eg: take a heap dump every second and one after the tests complete: dagger call test dump --run=TestCache/TestVolume --pkg=./core/integration --interval=1s export --path=/tmp/dump-$(datebut also works for profiles: dagger call test dump –run=TestCache/TestVolume –pkg=./core/integration –route=pprof/profile –no-final export –path=/tmp/dump-$(date

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
runString -Only run these tests
skipString -Skip these tests
pkgString "./..."No description provided
failfastBoolean -Abort test run on first failure
parallelInteger -How many tests to run in parallel - defaults to the number of CPUs
timeoutString -How long before timing out the test run
raceBoolean -No description provided
countInteger 1No description provided
testVerboseBoolean -Enable verbose output
routeString "pprof/heap"debug subroute to dump, like pprof/profile, pprof/heap, or requests
noFinalBoolean !falsewhen set, don't take a final dump after the tests have completed. usually good with --route="pprof/profile".
delayString "1s"wait this long before starting to take dumps. delay does not include engine startup.
intervalString "-1s"wait this long between dumps. negative values will fetch exactly 1 dump excluding the one controlled by "final"
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer test-dump --no-final boolean
func (m *MyModule) Example(subnetNumber int, noFinal bool) *dagger.Directory  {
	return dag.
			EngineDev(subnetNumber).
			TestDump(noFinal)
}
@function
def example(subnet_number: int, no_final: bool) -> dagger.Directory:
	return (
		dag.engine_dev(subnet_number)
		.test_dump(no_final)
	)
@func()
example(subnetNumber: number, noFinal: boolean): Directory {
	return dag
		.engineDev(subnetNumber)
		.testDump(noFinal)
}

tests() 🔗

List all core engine tests

Return Type
String !
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer tests
func (m *MyModule) Example(ctx context.Context, subnetNumber int) string  {
	return dag.
			EngineDev(subnetNumber).
			Tests(ctx)
}
@function
async def example(subnet_number: int, ) -> str:
	return await (
		dag.engine_dev(subnet_number)
		.tests()
	)
@func()
async example(subnetNumber: number, ): Promise<string> {
	return dag
		.engineDev(subnetNumber)
		.tests()
}

test() 🔗

Run core engine tests

Return Type
Void !
Arguments
NameTypeDefault ValueDescription
runString -Only run these tests
skipString -Skip these tests
pkgString "./..."No description provided
failfastBoolean -Abort test run on first failure
parallelInteger -How many tests to run in parallel - defaults to the number of CPUs
timeoutString -How long before timing out the test run
raceBoolean -No description provided
countInteger 1No description provided
envFileSecret -No description provided
testVerboseBoolean -Enable verbose output
updateBoolean -Update golden files
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer test
func (m *MyModule) Example(ctx context.Context, subnetNumber int)   {
	return dag.
			EngineDev(subnetNumber).
			Test(ctx)
}
@function
async def example(subnet_number: int, ) -> None:
	return await (
		dag.engine_dev(subnet_number)
		.test()
	)
@func()
async example(subnetNumber: number, ): Promise<void> {
	return dag
		.engineDev(subnetNumber)
		.test()
}

testTelemetry() 🔗

Run telemetry tests

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
runString -Only run these tests
skipString -Skip these tests
updateBoolean -No description provided
failfastBoolean -No description provided
parallelInteger -No description provided
timeoutString -No description provided
raceBoolean -No description provided
countInteger !1No description provided
envFileSecret -No description provided
testVerboseBoolean -No description provided
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer test-telemetry --count integer
func (m *MyModule) Example(subnetNumber int, count int) *dagger.Directory  {
	return dag.
			EngineDev(subnetNumber).
			TestTelemetry(count)
}
@function
def example(subnet_number: int, count: int) -> dagger.Directory:
	return (
		dag.engine_dev(subnet_number)
		.test_telemetry(count)
	)
@func()
example(subnetNumber: number, count: number): Directory {
	return dag
		.engineDev(subnetNumber)
		.testTelemetry(count)
}

benchmark() 🔗

Perform a benchmark of the given test run

Return Type
Void !
Arguments
NameTypeDefault ValueDescription
runString -Only run these benchmarks
skipString -Skip these benchmarks
pkgString "./..."No description provided
failfastBoolean -Abort bench run on first failure
timeoutString -How long before timing out the benchmark run
raceBoolean -No description provided
countInteger 1No description provided
testVerboseBoolean -Enable verbose output
prewarmBoolean -run benchmarks once with metrics tagged "prewarm" before running for real
discordWebhookSecret -notify this discord webhook on failure
repoGitRepository -Git repository to extract git metadata for discord notification
Example
echo 'Custom types are not supported in shell examples'
func (m *MyModule) Example(ctx context.Context, subnetNumber int)   {
	return dag.
			EngineDev(subnetNumber).
			Benchmark(ctx)
}
@function
async def example(subnet_number: int, ) -> None:
	return await (
		dag.engine_dev(subnet_number)
		.benchmark()
	)
@func()
async example(subnetNumber: number, ): Promise<void> {
	return dag
		.engineDev(subnetNumber)
		.benchmark()
}

benchmarkDump() 🔗

Run specific benchmarks while curling (pprof) dumps from their associated dev engine: defaults to heap dumps, eg: take a heap dump every second and one after the tests complete: dagger call test dump --run=TestCache/TestVolume --pkg=./core/integration --interval=1s export --path=/tmp/dump-$(datebut also works for profiles: dagger call test dump –run=TestCache/TestVolume –pkg=./core/integration –route=pprof/profile –no-final export –path=/tmp/dump-$(date

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
runString -Only run these tests
skipString -Skip these tests
pkgString "./..."No description provided
failfastBoolean -Abort test run on first failure
timeoutString -How long before timing out the test run
raceBoolean -No description provided
countInteger 1No description provided
testVerboseBoolean -Enable verbose output
routeString "pprof/heap"debug subroute to dump, like pprof/profile, pprof/heap, or requests
noFinalBoolean !falsewhen set, don't take a final dump after the tests have completed. usually good with --route="pprof/profile".
delayString "1s"wait this long before starting to take dumps. delay does not include engine startup.
intervalString "-1s"wait this long between dumps. negative values will fetch exactly 1 dump excluding the one controlled by "final"
Example
dagger -m github.com/shykes/dagger/toolchains/engine-dev@f06b7080f054d928d38147ed032f8c113820ed33 call \
 --subnet-number integer benchmark-dump --no-final boolean
func (m *MyModule) Example(subnetNumber int, noFinal bool) *dagger.Directory  {
	return dag.
			EngineDev(subnetNumber).
			BenchmarkDump(noFinal)
}
@function
def example(subnet_number: int, no_final: bool) -> dagger.Directory:
	return (
		dag.engine_dev(subnet_number)
		.benchmark_dump(no_final)
	)
@func()
example(subnetNumber: number, noFinal: boolean): Directory {
	return dag
		.engineDev(subnetNumber)
		.benchmarkDump(noFinal)
}

loadToDocker() 🔗

Load the engine container into a Docker engine

Return Type
EngineDevLoadedEngine !
Arguments
NameTypeDefault ValueDescription
dockerSocket !-No description provided
nameString "localhost/dagger-engine.dev:latest"No description provided
platformScalar -No description provided
imageEnum !"ALPINE"Set target distro
gpuSupportBoolean -Enable experimental GPU support
Example
echo 'Custom types are not supported in shell examples'
func (m *MyModule) Example(subnetNumber int, docker *dagger.Socket, image ) *dagger.EngineDevLoadedEngine  {
	return dag.
			EngineDev(subnetNumber).
			LoadToDocker(docker, image)
}
@function
def example(subnet_number: int, docker: dagger.Socket, image: ) -> dagger.EngineDevLoadedEngine:
	return (
		dag.engine_dev(subnet_number)
		.load_to_docker(docker, image)
	)
@func()
example(subnetNumber: number, docker: Socket, image: ): EngineDevLoadedEngine {
	return dag
		.engineDev(subnetNumber)
		.loadToDocker(docker, image)
}

EngineDevLoadedEngine 🔗

image() 🔗

Return Type
String !
Example
echo 'Custom types are not supported in shell examples'
func (m *MyModule) Example(ctx context.Context, docker *dagger.Socket, image ) string  {
	return dag.
			EngineDev().
			LoadToDocker(docker, image).
			Image(ctx)
}
@function
async def example(docker: dagger.Socket, image: ) -> str:
	return await (
		dag.engine_dev()
		.load_to_docker(docker, image)
		.image()
	)
@func()
async example(docker: Socket, image: ): Promise<string> {
	return dag
		.engineDev()
		.loadToDocker(docker, image)
		.image()
}

start() 🔗

Start the loaded engine container

Return Type
Void !
Arguments
NameTypeDefault ValueDescription
nameString "dagger-engine.dev"No description provided
cloudTokenSecret -No description provided
cloudUrlString -No description provided
debugBoolean -No description provided
extraHosts[String ! ] -No description provided
Example
echo 'Custom types are not supported in shell examples'
func (m *MyModule) Example(ctx context.Context, docker *dagger.Socket, image )   {
	return dag.
			EngineDev().
			LoadToDocker(docker, image).
			Start(ctx)
}
@function
async def example(docker: dagger.Socket, image: ) -> None:
	return await (
		dag.engine_dev()
		.load_to_docker(docker, image)
		.start()
	)
@func()
async example(docker: Socket, image: ): Promise<void> {
	return dag
		.engineDev()
		.loadToDocker(docker, image)
		.start()
}