diff --git a/README.md b/README.md index 5b7f6d51..aace6190 100644 --- a/README.md +++ b/README.md @@ -300,6 +300,7 @@ containerRunOptions: user: "root" # set the --user/-u flag privileged: true # set the --privileged flag (default: false) allocateTty: true # set the --tty flag (default: false) + network: "bridge" # set the --net flag (default: bridge) envFile: path/to/.env # load environment variables from file and pass to container (equivalent to --env-file) envVars: # if not empty, read each envVar from the environment and pass to test (equivalent to --env/e) - SECRET_KEY_FOO diff --git a/pkg/drivers/docker_driver.go b/pkg/drivers/docker_driver.go index 47083f98..cc52bda9 100644 --- a/pkg/drivers/docker_driver.go +++ b/pkg/drivers/docker_driver.go @@ -19,13 +19,14 @@ import ( "bufio" "bytes" "fmt" - "github.com/joho/godotenv" "io" "os" "path" "path/filepath" "strings" + "github.com/joho/godotenv" + "github.com/pkg/errors" "github.com/sirupsen/logrus" @@ -70,6 +71,7 @@ func (d *DockerDriver) hostConfig() *docker.HostConfig { Binds: d.runOpts.BindMounts, Privileged: d.runOpts.Privileged, Runtime: d.runtime, + NetworkMode: d.runOpts.Network, } } if d.runOpts.IsSet() { @@ -77,6 +79,7 @@ func (d *DockerDriver) hostConfig() *docker.HostConfig { Capabilities: d.runOpts.Capabilities, Binds: d.runOpts.BindMounts, Privileged: d.runOpts.Privileged, + NetworkMode: d.runOpts.Network, } } if d.runtime != "" { @@ -335,9 +338,13 @@ func (d *DockerDriver) runAndCommit(env []string, command []string) (string, err HostConfig: d.hostConfig(), NetworkingConfig: nil, } + if d.runOpts.IsSet() && len(d.runOpts.User) > 0 { createOpts.Config.User = d.runOpts.User } + if d.runOpts.IsSet() && len(d.runOpts.Network) > 0 { + createOpts.HostConfig.NetworkMode = d.runOpts.Network + } container, err := d.cli.CreateContainer(createOpts) if err != nil { return "", errors.Wrap(err, "Error creating container") diff --git a/pkg/types/unversioned/types.go b/pkg/types/unversioned/types.go index 84dfb602..545a354e 100644 --- a/pkg/types/unversioned/types.go +++ b/pkg/types/unversioned/types.go @@ -52,6 +52,7 @@ type ContainerRunOptions struct { EnvFile string `yaml:"envFile"` Capabilities []string BindMounts []string `yaml:"bindMounts"` + Network string `yaml:"network"` } func (opts *ContainerRunOptions) IsSet() bool { @@ -61,6 +62,7 @@ func (opts *ContainerRunOptions) IsSet() bool { len(opts.EnvFile) > 0 || (opts.EnvVars != nil && len(opts.EnvVars) > 0) || (opts.Capabilities != nil && len(opts.Capabilities) > 0) || + len(opts.Network) != 0 || (opts.BindMounts != nil && len(opts.BindMounts) > 0) }