From 7e1f2088d3f1841ea73d3e49d1a1b177d5224fd2 Mon Sep 17 00:00:00 2001 From: Justin Cormack Date: Fri, 7 Apr 2017 14:25:28 +0100 Subject: [PATCH] Make `init` accept a list of images not just a single one. fix #1527 Signed-off-by: Justin Cormack --- src/cmd/moby/build.go | 31 +++++++++++++++++-------------- src/cmd/moby/config.go | 2 +- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/cmd/moby/build.go b/src/cmd/moby/build.go index f8fcf8375..10ff1c29b 100644 --- a/src/cmd/moby/build.go +++ b/src/cmd/moby/build.go @@ -97,21 +97,24 @@ func buildInternal(name string, pull bool, conf string) { } initrdAppend(iw, ktar) - // convert init image to tarball - if pull { - log.Infof("Pull init: %s", m.Init) - err := dockerPull(m.Init) - if err != nil { - log.Fatalf("Could not pull image %s: %v", m.Init, err) + // convert init images to tarballs + log.Infof("Add init containers:") + for _, ii := range m.Init { + if pull { + log.Infof("Pull init image: %s", ii) + err := dockerPull(ii) + if err != nil { + log.Fatalf("Could not pull image %s: %v", ii, err) + } } + log.Infof("Process init image: %s", ii) + init, err := ImageExtract(ii, "") + if err != nil { + log.Fatalf("Failed to build init tarball from %s: %v", ii, err) + } + buffer := bytes.NewBuffer(init) + initrdAppend(iw, buffer) } - log.Infof("Process init: %s", m.Init) - init, err := ImageExtract(m.Init, "") - if err != nil { - log.Fatalf("Failed to build init tarball: %v", err) - } - buffer := bytes.NewBuffer(init) - initrdAppend(iw, buffer) log.Infof("Add system containers:") for i, image := range m.System { @@ -161,7 +164,7 @@ func buildInternal(name string, pull bool, conf string) { } // add files - buffer, err = filesystem(m) + buffer, err := filesystem(m) if err != nil { log.Fatalf("failed to add filesystem parts: %v", err) } diff --git a/src/cmd/moby/config.go b/src/cmd/moby/config.go index 7a8db9d77..ae7ddab07 100644 --- a/src/cmd/moby/config.go +++ b/src/cmd/moby/config.go @@ -24,7 +24,7 @@ type Moby struct { Image string Cmdline string } - Init string + Init []string System []MobyImage Daemon []MobyImage Files []struct {