diff --git a/stdlib/docker/command.cue b/stdlib/docker/command.cue index 2ad6b6c7..76d7e7fc 100644 --- a/stdlib/docker/command.cue +++ b/stdlib/docker/command.cue @@ -30,6 +30,10 @@ import ( keyPassphrase?: dagger.#Secret @dagger(input) } + // Connect via DOCKER_HOST, supports tcp:// + // TODO: Consider refactoring to support ssh:// & even file:// + host?: string @dagger(input) + // Command to execute command: string @@ -203,6 +207,9 @@ import ( FINGERPRINT: ssh.fingerprint } } + if host != _|_ && ssh == _|_ { + DOCKER_HOST: host + } } "mount": { if ssh != _|_ { diff --git a/stdlib/docker/docker.cue b/stdlib/docker/docker.cue index 3fb7637c..36021d31 100644 --- a/stdlib/docker/docker.cue +++ b/stdlib/docker/docker.cue @@ -124,6 +124,10 @@ import ( keyPassphrase?: dagger.#Input & {dagger.#Secret} } + // Connect via DOCKER_HOST, supports tcp:// + // TODO: Consider refactoring to support ssh:// & even file:// + host?: string @dagger(input) + // Mount local docker socket socket?: dagger.#Stream & dagger.#Input @@ -146,6 +150,9 @@ import ( if ssh != _|_ { "ssh": ssh } + if host != _|_ && ssh == _|_ { + "host": host + } if socket != _|_ { "socket": socket } @@ -194,6 +201,10 @@ import ( keyPassphrase?: dagger.#Input & {dagger.#Secret} } + // Connect via DOCKER_HOST, supports tcp:// + // TODO: Consider refactoring to support ssh:// & even file:// + host?: string @dagger(input) + // Mount local docker socket socket?: dagger.#Stream & dagger.#Input @@ -246,6 +257,9 @@ import ( if ssh != _|_ { "ssh": ssh } + if host != _|_ && ssh == _|_ { + "host": host + } if socket != _|_ { "socket": socket } diff --git a/stdlib/docker/tests/command-host/command.cue b/stdlib/docker/tests/command-host/command.cue new file mode 100644 index 00000000..043eb44c --- /dev/null +++ b/stdlib/docker/tests/command-host/command.cue @@ -0,0 +1,13 @@ +package docker + +TestConfig: { + host: string @dagger(input) +} + +TestHost: client: #Command & { + command: #""" + docker $CMD + """# + host: TestConfig.host + env: CMD: "version" +} diff --git a/stdlib/docker/tests/run-host/simple.cue b/stdlib/docker/tests/run-host/simple.cue new file mode 100644 index 00000000..17a15f43 --- /dev/null +++ b/stdlib/docker/tests/run-host/simple.cue @@ -0,0 +1,21 @@ +package docker + +import ( + "alpha.dagger.io/random" +) + +TestConfig: { + host: string @dagger(input) +} + +TestHost: { + suffix: random.#String & { + seed: "docker-tcp-test" + } + + run: #Run & { + name: "daggerci-test-tcp-\(suffix.out)" + ref: "hello-world" + host: TestConfig.host + } +}