Exceptions in .dockerignore

后端 未结 3 1143
天命终不由人
天命终不由人 2021-01-11 19:35

How does .dockerignore handle exceptions?

For example, I would like to ignore everything from the src/ directory except for src/web/p

相关标签:
3条回答
  • 2021-01-11 19:49

    It does not appear that .dockerignore handles exceptions. If there is a well-known syntax for this, you could propose the change and make a pull request.

    In tag 1.3 of commands.go we see this:

        ignore, err := ioutil.ReadFile(path.Join(root, ".dockerignore"))
        // ...
        options := &archive.TarOptions{
            Compression: archive.Uncompressed,
            Excludes:    excludes,
        }
        context, err = archive.TarWithOptions(root, options)
    

    and in archive.go:

        for _, include := range options.Includes {
    
                // ...
                skip, err := fileutils.Matches(relFilePath, options.Excludes)
                if err != nil {
                    log.Debugf("Error matching %s", relFilePath, err)
                    return err
                }
    
                if skip {
                    if f.IsDir() {
                        return filepath.SkipDir
                    }
                    return nil
                }
                // ...
        }
    
    0 讨论(0)
  • 2021-01-11 19:49

    Just wanted to add in case others run into this question, that from docker 1.7.0 exclusions are supported in the .dockerignore file. So the example !src/web/public in the question actually works

    https://docs.docker.com/engine/reference/builder/#dockerignore-file

    0 讨论(0)
  • 2021-01-11 20:02

    Using my response to another question https://stackoverflow.com/a/51429852/2419069 you can use the following .dockerignore file:

    # Ignore everything
    **
    
    # Allow /src/web/public directory
    !/src/web/public/**
    
    # You can also ignore unnecessary files inside the /src/web/public to make your image even smaller.
    **/*~
    **/*.log
    **/.DS_Store
    **/Thumbs.db
    
    0 讨论(0)
提交回复
热议问题