.dockerignore
如何处理异常?
例如,除了src/
之外,我想忽略src/web/public
目录中的所有内容。
我试过......
.git
src
!src/web/public
似乎不起作用。
docker build .
无论如何都显示Sending build context to Docker daemon 20.63 MB
。
答案 0 :(得分:14)
只是想添加以防其他人遇到这个问题
来自docker 1.7.0排除项在.dockerignore文件中受支持。所以问题中的示例!src/web/public
实际上有效
https://docs.docker.com/engine/reference/builder/#dockerignore-file
答案 1 :(得分:3)
.dockerignore
似乎没有处理异常。如果有一个众所周知的语法,you could propose the change and make a pull request。
在tag 1.3 of commands.go中,我们看到了这一点:
ignore, err := ioutil.ReadFile(path.Join(root, ".dockerignore"))
// ...
options := &archive.TarOptions{
Compression: archive.Uncompressed,
Excludes: excludes,
}
context, err = archive.TarWithOptions(root, options)
并在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
}
// ...
}
答案 2 :(得分:0)
使用我对另一个问题https://stackoverflow.com/a/51429852/2419069的答复,您可以使用以下.dockerignore
文件:
# 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