diff --git a/components/cli/cli/command/stack/kubernetes/deploy.go b/components/cli/cli/command/stack/kubernetes/deploy.go index 02215a79c0..b319eba8b0 100644 --- a/components/cli/cli/command/stack/kubernetes/deploy.go +++ b/components/cli/cli/command/stack/kubernetes/deploy.go @@ -26,7 +26,7 @@ func RunDeploy(dockerCli *KubeCli, opts options.Deploy) error { if err != nil { return err } - stack, err := LoadStack(opts.Namespace, version, cfg) + stack, err := LoadStack(opts.Namespace, version, *cfg) if err != nil { return err } diff --git a/components/cli/cli/command/stack/kubernetes/loader.go b/components/cli/cli/command/stack/kubernetes/loader.go index 75a5473ab9..f39d31529c 100644 --- a/components/cli/cli/command/stack/kubernetes/loader.go +++ b/components/cli/cli/command/stack/kubernetes/loader.go @@ -8,15 +8,16 @@ import ( ) type versionedConfig struct { - composetypes.Config - Version string + *composetypes.Config `yaml:",inline"` + Version string } // LoadStack loads a stack from a Compose config, with a given name. -func LoadStack(name, version string, cfg *composetypes.Config) (*apiv1beta1.Stack, error) { +func LoadStack(name, version string, cfg composetypes.Config) (*apiv1beta1.Stack, error) { + cfg.Filename = "" res, err := yaml.Marshal(versionedConfig{ Version: version, - Config: *cfg, + Config: &cfg, }) if err != nil { return nil, err diff --git a/components/cli/cli/command/stack/kubernetes/loader_test.go b/components/cli/cli/command/stack/kubernetes/loader_test.go new file mode 100644 index 0000000000..7e2ff8d810 --- /dev/null +++ b/components/cli/cli/command/stack/kubernetes/loader_test.go @@ -0,0 +1,44 @@ +package kubernetes + +import ( + "testing" + + composetypes "github.com/docker/cli/cli/compose/types" + apiv1beta1 "github.com/docker/cli/kubernetes/compose/v1beta1" + "github.com/stretchr/testify/require" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +func TestLoadStack(t *testing.T) { + s, err := LoadStack("foo", "3.1", composetypes.Config{ + Filename: "banana", + Services: []composetypes.ServiceConfig{ + { + Name: "foo", + Image: "foo", + }, + { + Name: "bar", + Image: "bar", + }, + }, + }) + require.NoError(t, err) + require.Equal(t, &apiv1beta1.Stack{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + }, + Spec: apiv1beta1.StackSpec{ + ComposeFile: string(`configs: {} +networks: {} +secrets: {} +services: + bar: + image: bar + foo: + image: foo +volumes: {} +`), + }, + }, s) +} diff --git a/components/cli/contrib/completion/bash/docker b/components/cli/contrib/completion/bash/docker index aa794126f4..efc64abede 100644 --- a/components/cli/contrib/completion/bash/docker +++ b/components/cli/contrib/completion/bash/docker @@ -4648,7 +4648,7 @@ _docker_system_events() { return ;; type) - COMPREPLY=( $( compgen -W "container daemon image network plugin volume" -- "${cur##*=}" ) ) + COMPREPLY=( $( compgen -W "config container daemon image network plugin secret service volume" -- "${cur##*=}" ) ) return ;; volume) diff --git a/components/cli/docs/reference/commandline/kill.md b/components/cli/docs/reference/commandline/kill.md index 5ec507d92e..ba77185be8 100644 --- a/components/cli/docs/reference/commandline/kill.md +++ b/components/cli/docs/reference/commandline/kill.md @@ -27,9 +27,45 @@ Options: ## Description -The main process inside the container will be sent `SIGKILL`, or any -signal specified with option `--signal`. +The `docker kill` subcommand kills one or more containers. The main process +inside the container is sent `SIGKILL` signal (default), or the signal that is +specified with the `--signal` option. You can kill a container using the +container's ID, ID-prefix, or name. > **Note**: `ENTRYPOINT` and `CMD` in the *shell* form run as a subcommand of > `/bin/sh -c`, which does not pass signals. This means that the executable is > not the container’s PID 1 and does not receive Unix signals. + +## Examples + + +### Send a KILL signal to a container + +The following example sends the default `KILL` signal to the container named +`my_container`: + +```bash +$ docker kill my_container +``` + +### Send a custom signal to a container + +The following example sends a `SIGHUP` signal to the container named +`my_container`: + +```bash +$ docker kill --signal=SIGHUP my_container +``` + + +You can specify a custom signal either by _name_, or _number_. The `SIG` prefix +is optional, so the following examples are equivalent: + +```bash +$ docker kill --signal=SIGHUP my_container +$ docker kill --signal=HUP my_container +$ docker kill --signal=1 my_container +``` + +Refer to the [`signal(7)`](http://man7.org/linux/man-pages/man7/signal.7.html) +man-page for a list of standard Linux signals.