From a1f912c4d51c561523ba03a2d6d81d9b27d9b27d Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Sat, 4 Apr 2015 09:55:41 -0700 Subject: [PATCH] Wait for userdocker to start --- cmd/wait/wait.go | 19 +++++++++++++++++++ config/default.go | 10 ++++++++++ main.go | 4 +++- scripts/dockerimages/11-userdockerwait | 2 ++ 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 cmd/wait/wait.go create mode 100644 scripts/dockerimages/11-userdockerwait diff --git a/cmd/wait/wait.go b/cmd/wait/wait.go new file mode 100644 index 00000000..c779c014 --- /dev/null +++ b/cmd/wait/wait.go @@ -0,0 +1,19 @@ +package wait + +import ( + "os" + + "github.com/Sirupsen/logrus" + "github.com/rancherio/os/config" + "github.com/rancherio/os/docker" +) + +func Main() { + _, err := docker.NewClient(config.DOCKER_HOST) + if err != nil { + logrus.Errorf("Failed to conect to Docker") + os.Exit(1) + } + + logrus.Infof("Docker is ready") +} diff --git a/config/default.go b/config/default.go index e6fb2592..bfc7c45a 100644 --- a/config/default.go +++ b/config/default.go @@ -129,6 +129,7 @@ func NewConfig() *Config { "/init:/usr/bin/rancherctl:ro", "/init:/usr/bin/respawn:ro", "/init:/usr/bin/system-docker:ro", + "/init:/usr/sbin/wait-for-docker:ro", "/lib/modules:/lib/modules:ro", "/usr/bin/docker:/usr/bin/docker:ro", }, @@ -255,6 +256,15 @@ func NewConfig() *Config { Links: []string{ "network", }, + "userdockerwait": { + Image: "userdockerwait", + Net: "host", + Labels: []string{ + "io.rancher.os.detach=false", + }, + Links: []string{ + "userdocker", + }, VolumesFrom: []string{ "all-volumes", }, diff --git a/main.go b/main.go index 729184dc..31384dfa 100644 --- a/main.go +++ b/main.go @@ -8,11 +8,12 @@ import ( "github.com/docker/docker/pkg/reexec" "github.com/rancherio/os/cmd/cloudinit" "github.com/rancherio/os/cmd/control" + "github.com/rancherio/os/cmd/network" "github.com/rancherio/os/cmd/power" "github.com/rancherio/os/cmd/respawn" "github.com/rancherio/os/cmd/sysinit" "github.com/rancherio/os/cmd/systemdocker" - "github.com/rancherio/os/cmd/network" + "github.com/rancherio/os/cmd/wait" osInit "github.com/rancherio/os/init" ) @@ -46,6 +47,7 @@ func main() { registerCmd("/usr/sbin/rancherctl", control.Main) registerCmd("/usr/bin/cloud-init", cloudinit.Main) registerCmd("/usr/sbin/netconf", network.Main) + registerCmd("/usr/sbin/wait-for-docker", wait.Main) if !reexec.Init() { log.Fatalf("Failed to find an entry point for %s", os.Args[0]) diff --git a/scripts/dockerimages/11-userdockerwait b/scripts/dockerimages/11-userdockerwait new file mode 100644 index 00000000..70f30187 --- /dev/null +++ b/scripts/dockerimages/11-userdockerwait @@ -0,0 +1,2 @@ +FROM base +CMD ["/usr/sbin/wait-for-docker"]