Use image.config in docker.#Run
Signed-off-by: Joel Longtine <joel@dagger.io>
This commit is contained in:
parent
7788b9f2f3
commit
dcef2958cf
@ -2,6 +2,7 @@ package docker
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"list"
|
"list"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"dagger.io/dagger"
|
"dagger.io/dagger"
|
||||||
"dagger.io/dagger/engine"
|
"dagger.io/dagger/engine"
|
||||||
@ -36,7 +37,7 @@ import (
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Command to execute
|
// Command to execute
|
||||||
cmd: {
|
cmd?: {
|
||||||
// Name of the command to execute
|
// Name of the command to execute
|
||||||
// Examples: "ls", "/bin/bash"
|
// Examples: "ls", "/bin/bash"
|
||||||
name: string
|
name: string
|
||||||
@ -83,7 +84,7 @@ import (
|
|||||||
// Username or UID to ad
|
// Username or UID to ad
|
||||||
// User identity for this command
|
// User identity for this command
|
||||||
// Examples: "root", "0", "1002"
|
// Examples: "root", "0", "1002"
|
||||||
user: string | *"root"
|
user: string
|
||||||
|
|
||||||
// Output fields
|
// Output fields
|
||||||
{
|
{
|
||||||
@ -129,12 +130,41 @@ import (
|
|||||||
|
|
||||||
// Actually execute the command
|
// Actually execute the command
|
||||||
_exec: engine.#Exec & {
|
_exec: engine.#Exec & {
|
||||||
args: [cmd.name] + cmd._flatFlags + cmd.args
|
input: _image.rootfs
|
||||||
input: _image.rootfs
|
"always": always
|
||||||
"always": always
|
"mounts": mounts
|
||||||
"mounts": mounts
|
|
||||||
"env": env
|
if cmd != _|_ {
|
||||||
|
args: [cmd.name] + cmd._flatFlags + cmd.args
|
||||||
|
}
|
||||||
|
if cmd == _|_ {
|
||||||
|
args: list.Concat([
|
||||||
|
if _image.config.Entrypoint != _|_ {
|
||||||
|
_image.config.Entrypoint
|
||||||
|
},
|
||||||
|
if _image.config.Cmd != _|_ {
|
||||||
|
_image.config.Cmd
|
||||||
|
},
|
||||||
|
])
|
||||||
|
}
|
||||||
|
"env": env
|
||||||
|
if _image.config.Env != _|_ {
|
||||||
|
for _, envvar in _image.config.Env {
|
||||||
|
let split = strings.SplitN(envvar, "=", 2)
|
||||||
|
let k = split[0]
|
||||||
|
let v = split[1]
|
||||||
|
if env[k] == _|_ {
|
||||||
|
"env": "\(k)": v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
"workdir": workdir
|
"workdir": workdir
|
||||||
"user": user
|
if workdir == _|_ && _image.config.WorkingDir != _|_ {
|
||||||
|
"workdir": _image.config.WorkingDir
|
||||||
|
}
|
||||||
|
"user": user
|
||||||
|
if user == _|_ && _image.config.User != _|_ {
|
||||||
|
"user": _image.config.User
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user