feat: add containerimage support, solve ##1734

This commit is contained in:
Bence Major 2024-08-30 08:40:10 +02:00
parent e328007bc1
commit cf6f7a5417
4 changed files with 26 additions and 7 deletions

View File

@ -395,7 +395,12 @@ func copyDockerfile() error {
return errors.Wrap(err, "copying dockerfile")
}
dockerignorePath := opts.DockerfilePath + ".dockerignore"
if util.FilepathExists(dockerignorePath) {
containerignorePath := opts.DockerfilePath + ".containerignore"
if util.FilepathExists(containerignorePath) {
if _, err := util.CopyFile(containerignorePath, config.DockerfilePath+".containerignore", util.FileContext{}, util.DoNotChangeUID, util.DoNotChangeGID, fs.FileMode(0o600), true); err != nil {
return errors.Wrap(err, "copying Dockerfile.containerignore")
}
} else if util.FilepathExists(dockerignorePath) {
if _, err := util.CopyFile(dockerignorePath, config.DockerfilePath+".dockerignore", util.FileContext{}, util.DoNotChangeUID, util.DoNotChangeGID, fs.FileMode(0o600), true); err != nil {
return errors.Wrap(err, "copying Dockerfile.dockerignore")
}

View File

@ -0,0 +1,3 @@
# A .dockerignore file to make sure dockerignore support works
ignore/**
!ignore/foo

View File

@ -0,0 +1,3 @@
# A .containerignore file to make sure containerignore support works
ignore_relative/**
!ignore_relative/foo

View File

@ -775,17 +775,25 @@ func NewFileContextFromDockerfile(dockerfilePath, buildcontext string) (FileCont
// getExcludedFiles returns a list of files to exclude from the .dockerignore
func getExcludedFiles(dockerfilePath, buildcontext string) ([]string, error) {
path := dockerfilePath + ".dockerignore"
if !FilepathExists(path) {
var path string
dockerignorePath := dockerfilePath + ".dockerignore"
containerignorePath := dockerfilePath + ".containerignore"
if FilepathExists(containerignorePath) {
path = containerignorePath
} else if FilepathExists(filepath.Join(buildcontext, ".containerignore")) {
path = filepath.Join(buildcontext, ".containerignore")
} else if FilepathExists(dockerignorePath) {
path = dockerignorePath
} else if FilepathExists(filepath.Join(buildcontext, ".dockerignore")) {
path = filepath.Join(buildcontext, ".dockerignore")
}
if !FilepathExists(path) {
} else {
return nil, nil
}
logrus.Infof("Using dockerignore file: %v", path)
logrus.Infof("Using ignorefile: %v", path)
contents, err := os.ReadFile(path)
if err != nil {
return nil, errors.Wrap(err, "parsing .dockerignore")
return nil, errors.Wrap(err, "parsing ignorefile")
}
reader := bytes.NewBuffer(contents)
return dockerignore.ReadAll(reader)