diff --git a/fs/store.go b/fs/store.go index b0fdadcc16..fab4924d34 100644 --- a/fs/store.go +++ b/fs/store.go @@ -101,6 +101,26 @@ func (store *Store) List(pth string) ([]*Image, error) { return store.imageList(images), nil } +func (store *Store) Find(pth string) (*Image, error) { + pth = path.Clean(pth) + img, err := store.Get(pth) + if err != nil { + return nil, err + } else if img != nil { + return img, nil + } + + images, err := store.orm.Select(Image{}, "select images.* from images, paths where Path=? and paths.Image=images.Id order by images.Created desc limit 1", pth) + if err != nil { + return nil, err + } else if len(images) < 1 { + return nil, nil + } + img = images[0].(*Image) + img.store = store + return img, nil +} + func (store *Store) Get(id string) (*Image, error) { img, err := store.orm.Get(Image{}, id) if img == nil { diff --git a/server/server.go b/server/server.go index cbec3edc05..d28aeaf7c6 100644 --- a/server/server.go +++ b/server/server.go @@ -835,7 +835,7 @@ func (srv *Server) CmdRun(stdin io.ReadCloser, stdout io.Writer, args ...string) cmdline = []string{"/bin/bash", "-i"} } // Find the image - img, err := srv.images.Get(name) + img, err := srv.images.Find(name) if err != nil { return err } else if img == nil {