Merge pull request #1234 from tejal29/fix_copy_from
Apply dockefile exclude only for first stage
This commit is contained in:
commit
3f3c19a545
|
|
@ -1,5 +1,11 @@
|
||||||
# This dockerfile makes sure the .dockerignore is working
|
# This dockerfile makes sure the .dockerignore is working
|
||||||
# If so then ignore/foo should copy to /foo
|
# If so then ignore/foo should copy to /foo
|
||||||
# If not, then this image won't build because it will attempt to copy three files to /foo, which is a file not a directory
|
# If not, then this image won't build because it will attempt to copy three files to /foo, which is a file not a directory
|
||||||
FROM scratch
|
FROM scratch as base
|
||||||
COPY ignore/* /foo
|
COPY ignore/* /foo
|
||||||
|
|
||||||
|
From base as first
|
||||||
|
COPY --from=base /foo ignore/bar
|
||||||
|
|
||||||
|
FROM first
|
||||||
|
COPY --from=first ignore/* /fooAnother/
|
||||||
|
|
@ -596,6 +596,7 @@ func DoBuild(opts *config.KanikoOptions) (v1.Image, error) {
|
||||||
}
|
}
|
||||||
logrus.Infof("Built cross stage deps: %v", crossStageDependencies)
|
logrus.Infof("Built cross stage deps: %v", crossStageDependencies)
|
||||||
|
|
||||||
|
util.IsFirstStage = true
|
||||||
for index, stage := range kanikoStages {
|
for index, stage := range kanikoStages {
|
||||||
sb, err := newStageBuilder(opts, stage, crossStageDependencies, digestToCacheKey, stageIdxToDigest, stageNameToIdx)
|
sb, err := newStageBuilder(opts, stage, crossStageDependencies, digestToCacheKey, stageIdxToDigest, stageNameToIdx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -604,6 +605,7 @@ func DoBuild(opts *config.KanikoOptions) (v1.Image, error) {
|
||||||
if err := sb.build(); err != nil {
|
if err := sb.build(); err != nil {
|
||||||
return nil, errors.Wrap(err, "error building stage")
|
return nil, errors.Wrap(err, "error building stage")
|
||||||
}
|
}
|
||||||
|
util.IsFirstStage = false
|
||||||
|
|
||||||
reviewConfig(stage, &sb.cf.Config)
|
reviewConfig(stage, &sb.cf.Config)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@ var whitelist = initialWhitelist
|
||||||
var volumes = []string{}
|
var volumes = []string{}
|
||||||
|
|
||||||
var excluded []string
|
var excluded []string
|
||||||
|
var IsFirstStage = true
|
||||||
|
|
||||||
type ExtractFunction func(string, *tar.Header, io.Reader) error
|
type ExtractFunction func(string, *tar.Header, io.Reader) error
|
||||||
|
|
||||||
|
|
@ -678,6 +679,10 @@ func GetExcludedFiles(dockerfilepath string, buildcontext string) error {
|
||||||
|
|
||||||
// ExcludeFile returns true if the .dockerignore specified this file should be ignored
|
// ExcludeFile returns true if the .dockerignore specified this file should be ignored
|
||||||
func ExcludeFile(path, buildcontext string) bool {
|
func ExcludeFile(path, buildcontext string) bool {
|
||||||
|
// Apply dockerfile excludes for first stage only
|
||||||
|
if !IsFirstStage {
|
||||||
|
return false
|
||||||
|
}
|
||||||
if HasFilepathPrefix(path, buildcontext, false) {
|
if HasFilepathPrefix(path, buildcontext, false) {
|
||||||
var err error
|
var err error
|
||||||
path, err = filepath.Rel(buildcontext, path)
|
path, err = filepath.Rel(buildcontext, path)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue