MCPcopy Index your code
hub / github.com/dagger/dagger / LoadToDocker

Method LoadToDocker

toolchains/engine-dev/docker.go:16–75  ·  view source on GitHub ↗

Load the engine container into a Docker engine +cache="session"

(
	ctx context.Context,

	docker *dagger.Socket,

	// +optional
	// +default="localhost/dagger-engine.dev:latest"
	name string,

	// +optional
	platform dagger.Platform,

	// Enable experimental GPU support
	// +optional
	gpuSupport bool,
)

Source from the content-addressed store, hash-verified

14// Load the engine container into a Docker engine
15// +cache="session"
16func (dev *EngineDev) LoadToDocker(
17 ctx context.Context,
18
19 docker *dagger.Socket,
20
21 // +optional
22 // +default="localhost/dagger-engine.dev:latest"
23 name string,
24
25 // +optional
26 platform dagger.Platform,
27
28 // Enable experimental GPU support
29 // +optional
30 gpuSupport bool,
31) (*LoadedEngine, error) {
32 ctr, err := dev.Container(ctx, platform, gpuSupport, "", "")
33 if err != nil {
34 return nil, err
35 }
36 tar := ctr.AsTarball(dagger.ContainerAsTarballOpts{
37 // use gzip to avoid incompatibility w/ older docker versions
38 ForcedCompression: dagger.ImageLayerCompressionGzip,
39 })
40
41 loader := dag.Container().
42 From("docker:cli").
43 WithUnixSocket("/var/run/docker.sock", docker).
44 WithMountedFile("/image.tar.gz", tar).
45 WithEnvVariable("CACHEBUSTER", rand.Text())
46
47 stdout, err := loader.
48 WithExec([]string{"docker", "load", "-i", "/image.tar.gz"}).
49 Stdout(ctx)
50 if err != nil {
51 return nil, fmt.Errorf("docker load failed: %w", err)
52 }
53
54 _, imageID, ok := strings.Cut(stdout, "Loaded image ID: sha256:")
55 if !ok {
56 _, imageID, ok = strings.Cut(stdout, "Loaded image: sha256:") // podman
57 if !ok {
58 return nil, fmt.Errorf("unexpected output from docker load")
59 }
60 }
61 imageID = strings.TrimSpace(imageID)
62
63 _, err = loader.
64 WithExec([]string{"docker", "tag", imageID, name}).
65 Sync(ctx)
66 if err != nil {
67 return nil, fmt.Errorf("docker tag failed: %w", err)
68 }
69
70 return &LoadedEngine{
71 Loader: loader,
72 Image: name,
73 GPUSupport: gpuSupport,

Callers 1

invokeFunction · 0.45

Calls 10

ContainerMethod · 0.95
SyncMethod · 0.65
AsTarballMethod · 0.45
WithEnvVariableMethod · 0.45
WithMountedFileMethod · 0.45
WithUnixSocketMethod · 0.45
FromMethod · 0.45
TextMethod · 0.45
StdoutMethod · 0.45
WithExecMethod · 0.45

Tested by

no test coverage detected