From bc6cc53700d713e6c86b8f9c463eef6b31276b02 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Wed, 21 Mar 2018 12:57:53 +0100 Subject: [PATCH] Split daemon service code to _windows file This moves some of the code that was conditionally executed on Windows to a separate, windows-only file. Signed-off-by: Sebastiaan van Stijn Upstream-commit: cd3e84c6b38e74d03ab31db804bc9b49dcab8243 Component: engine --- components/engine/cmd/dockerd/daemon_unix.go | 4 -- components/engine/cmd/dockerd/docker.go | 44 ++----------------- components/engine/cmd/dockerd/docker_unix.go | 8 ++++ .../engine/cmd/dockerd/docker_windows.go | 33 ++++++++++++++ .../engine/cmd/dockerd/service_unsupported.go | 4 -- 5 files changed, 45 insertions(+), 48 deletions(-) create mode 100644 components/engine/cmd/dockerd/docker_unix.go diff --git a/components/engine/cmd/dockerd/daemon_unix.go b/components/engine/cmd/dockerd/daemon_unix.go index a65d8ed012..6ab2ada485 100644 --- a/components/engine/cmd/dockerd/daemon_unix.go +++ b/components/engine/cmd/dockerd/daemon_unix.go @@ -104,10 +104,6 @@ func allocateDaemonPort(addr string) error { return nil } -// notifyShutdown is called after the daemon shuts down but before the process exits. -func notifyShutdown(err error) { -} - func wrapListeners(proto string, ls []net.Listener) []net.Listener { switch proto { case "unix": diff --git a/components/engine/cmd/dockerd/docker.go b/components/engine/cmd/dockerd/docker.go index 2ccca46c18..e90a12e366 100644 --- a/components/engine/cmd/dockerd/docker.go +++ b/components/engine/cmd/dockerd/docker.go @@ -3,7 +3,6 @@ package main import ( "fmt" "os" - "path/filepath" "runtime" "github.com/docker/docker/cli" @@ -25,6 +24,10 @@ func newDaemonCommand() *cobra.Command { SilenceErrors: true, Args: cli.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { + if opts.version { + showVersion() + return nil + } opts.flags = cmd.Flags() return runDaemon(opts) }, @@ -41,45 +44,6 @@ func newDaemonCommand() *cobra.Command { return cmd } -func runDaemon(opts *daemonOptions) error { - if opts.version { - showVersion() - return nil - } - - daemonCli := NewDaemonCli() - - // Windows specific settings as these are not defaulted. - if runtime.GOOS == "windows" { - if opts.daemonConfig.Pidfile == "" { - opts.daemonConfig.Pidfile = filepath.Join(opts.daemonConfig.Root, "docker.pid") - } - if opts.configFile == "" { - opts.configFile = filepath.Join(opts.daemonConfig.Root, `config\daemon.json`) - } - } - - // On Windows, this may be launching as a service or with an option to - // register the service. - stop, runAsService, err := initService(daemonCli) - if err != nil { - logrus.Fatal(err) - } - - if stop { - return nil - } - - // If Windows SCM manages the service - no need for PID files - if runAsService { - opts.daemonConfig.Pidfile = "" - } - - err = daemonCli.start(opts) - notifyShutdown(err) - return err -} - func showVersion() { fmt.Printf("Docker version %s, build %s\n", dockerversion.Version, dockerversion.GitCommit) } diff --git a/components/engine/cmd/dockerd/docker_unix.go b/components/engine/cmd/dockerd/docker_unix.go new file mode 100644 index 0000000000..0dec48663d --- /dev/null +++ b/components/engine/cmd/dockerd/docker_unix.go @@ -0,0 +1,8 @@ +// +build !windows + +package main + +func runDaemon(opts *daemonOptions) error { + daemonCli := NewDaemonCli() + return daemonCli.start(opts) +} diff --git a/components/engine/cmd/dockerd/docker_windows.go b/components/engine/cmd/dockerd/docker_windows.go index 889e35272d..bd8bc5a58e 100644 --- a/components/engine/cmd/dockerd/docker_windows.go +++ b/components/engine/cmd/dockerd/docker_windows.go @@ -1,5 +1,38 @@ package main import ( + "path/filepath" + _ "github.com/docker/docker/autogen/winresources/dockerd" + "github.com/sirupsen/logrus" ) + +func runDaemon(opts *daemonOptions) error { + daemonCli := NewDaemonCli() + + // On Windows, this may be launching as a service or with an option to + // register the service. + stop, runAsService, err := initService(daemonCli) + if err != nil { + logrus.Fatal(err) + } + + if stop { + return nil + } + + // Windows specific settings as these are not defaulted. + if opts.configFile == "" { + opts.configFile = filepath.Join(opts.daemonConfig.Root, `config\daemon.json`) + } + if runAsService { + // If Windows SCM manages the service - no need for PID files + opts.daemonConfig.Pidfile = "" + } else if opts.daemonConfig.Pidfile == "" { + opts.daemonConfig.Pidfile = filepath.Join(opts.daemonConfig.Root, "docker.pid") + } + + err = daemonCli.start(opts) + notifyShutdown(err) + return err +} diff --git a/components/engine/cmd/dockerd/service_unsupported.go b/components/engine/cmd/dockerd/service_unsupported.go index e67ad474b1..bbcb7f3f3b 100644 --- a/components/engine/cmd/dockerd/service_unsupported.go +++ b/components/engine/cmd/dockerd/service_unsupported.go @@ -6,9 +6,5 @@ import ( "github.com/spf13/pflag" ) -func initService(daemonCli *DaemonCli) (bool, bool, error) { - return false, false, nil -} - func installServiceFlags(flags *pflag.FlagSet) { }