1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

builder: Fix releasing implicit mounts

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
Tonis Tiigi 2017-05-08 10:32:20 -07:00
parent dda41118b0
commit 29efb93a19

View file

@ -20,7 +20,8 @@ type pathCache interface {
// them as contexts // them as contexts
type imageContexts struct { type imageContexts struct {
b *Builder b *Builder
list []*imageMount list []*imageMount // indexed list of stages
implicitMounts []*imageMount // implicitly mounted images
byName map[string]*imageMount byName map[string]*imageMount
cache pathCache cache pathCache
} }
@ -75,16 +76,19 @@ func (ic *imageContexts) get(indexOrName string) (*imageMount, error) {
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "invalid from flag value %s", indexOrName) return nil, errors.Wrapf(err, "invalid from flag value %s", indexOrName)
} }
ic.implicitMounts = append(ic.implicitMounts, im)
return im, nil return im, nil
} }
func (ic *imageContexts) unmount() (retErr error) { func (ic *imageContexts) unmount() (retErr error) {
for _, im := range ic.list { for _, iml := range append([][]*imageMount{}, ic.list, ic.implicitMounts) {
for _, im := range iml {
if err := im.unmount(); err != nil { if err := im.unmount(); err != nil {
logrus.Error(err) logrus.Error(err)
retErr = err retErr = err
} }
} }
}
for _, im := range ic.byName { for _, im := range ic.byName {
if err := im.unmount(); err != nil { if err := im.unmount(); err != nil {
logrus.Error(err) logrus.Error(err)