Fixing logic for Copy command. The problem was not that tar files were being unpacked in wrong order. The problem was that the COPY command requires the FS to be unpacked before it does its work.

This commit is contained in:
Don McCasland 2019-09-26 11:29:53 -07:00
parent 1bb5a41d7d
commit e58ee0967a
No known key found for this signature in database
GPG Key ID: 2B332A542CE5FE1B
2 changed files with 8 additions and 2 deletions

View File

@ -70,6 +70,7 @@ func (c *CopyCommand) ExecuteCommand(config *v1.Config, buildArgs *dockerfile.Bu
// we need to add '/' to the end to indicate the destination is a directory
dest = filepath.Join(cwd, dest) + "/"
}
logrus.Debugf("Calling CopyDir fullPath:%s dest:%s", fullPath, dest)
copiedFiles, err := util.CopyDir(fullPath, dest, c.buildcontext)
if err != nil {
return err
@ -87,6 +88,7 @@ func (c *CopyCommand) ExecuteCommand(config *v1.Config, buildArgs *dockerfile.Bu
c.snapshotFiles = append(c.snapshotFiles, destPath)
} else {
// ... Else, we want to copy over a file
logrus.Debugf("Calling CopyFile fullPath:%s destPath:%s", fullPath, destPath)
exclude, err := util.CopyFile(fullPath, destPath, c.buildcontext)
if err != nil {
return err
@ -134,3 +136,7 @@ func (c *CopyCommand) FilesUsedFromContext(config *v1.Config, buildArgs *dockerf
func (c *CopyCommand) MetadataOnly() bool {
return false
}
func (c *CopyCommand) RequiresUnpackedFS() bool {
return true
}

View File

@ -192,8 +192,8 @@ func extractFile(dest string, hdr *tar.Header, tr io.Reader) error {
// or a file was copied over a directory prior to now
fi, err := os.Stat(dir)
if os.IsNotExist(err) || !fi.IsDir() {
logrus.Debugf("base %s for file %s does not exist. Creating.", base, path)
os.RemoveAll(dir)
logrus.Infof("base %s for file %s does not exist. Creating.", base, path)
//os.RemoveAll(dir)
if err := os.MkdirAll(dir, 0755); err != nil {
return err
}