docker - 忽略 .dockerignore 中的所有 .git 文件夹
问题描述
我有一个项目有几个 git 克隆,每个文件夹都有他的 .git 并且一些文件夹在文件夹中有克隆
所以可以忽略所有 .git 文件夹吗?
我测试了文档中描述的许多规则,但我只设法忽略了顶层文件夹。
解决方案
使用模式就足够了**
。例如:
.dockerignore
**/.git
官方文档该页面的相关段落是:
.dockerignore 文件
[…]
匹配是使用 Go 的filepath.Match规则完成的。预处理步骤使用 Go 的filepath.Clean删除前导和尾随空格并消除
.
和元素。预处理后空白的行将被忽略。..
除了 Go 的 filepath.Match 规则,Docker 还支持一个特殊的通配符字符串
**
,它可以匹配任意数量的目录(包括零)。例如,**/*.go
将排除在所有目录中找到的所有以 结尾的文件.go
,包括构建上下文的根目录。[…]
工作示例
这是在 Debian GNU/Linux 下与 Docker CE 的完整会话:
$ docker version
Client:
Version: 18.09.2
API version: 1.39
Go version: go1.10.6
Git commit: 6247962
Built: Sun Feb 10 04:13:52 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.2
API version: 1.39 (minimum version 1.12)
Go version: go1.10.6
Git commit: 6247962
Built: Sun Feb 10 03:42:13 2019
OS/Arch: linux/amd64
Experimental: false
考虑以下工作目录:
$ tree -a
.
├── a
│ ├── .git
│ │ └── c
│ └── go
│ └── 1
├── b
│ ├── c
│ │ ├── .git
│ │ │ └── c
│ │ └── go
│ │ └── 1
│ ├── .git
│ │ └── c
│ └── go
│ └── 1
├── Dockerfile
├── .dockerignore
├── .git
│ └── c
└── go
└── 1
以及以下源文件:
$ cat .dockerignore
**/.git
$ cat Dockerfile
FROM debian
WORKDIR /app
COPY . .
CMD ls -Rhal
然后我得到:
$ docker build -t test .
[…]
$ docker run --rm -it test
.:
total 28K
drwxr-xr-x 1 root root 4.0K Feb 20 19:40 .
drwxr-xr-x 1 root root 4.0K Feb 20 19:43 ..
-rw-r--r-- 1 root root 8 Feb 20 19:38 .dockerignore
-rw-r--r-- 1 root root 50 Feb 20 19:40 Dockerfile
drwxr-xr-x 3 root root 4.0K Feb 20 19:39 a
drwxr-xr-x 4 root root 4.0K Feb 20 19:39 b
drwx------ 2 root root 4.0K Feb 20 19:40 go
./a:
total 12K
drwxr-xr-x 3 root root 4.0K Feb 20 19:39 .
drwxr-xr-x 1 root root 4.0K Feb 20 19:40 ..
drwxr-xr-x 2 root root 4.0K Feb 20 19:39 go
./a/go:
total 8.0K
drwxr-xr-x 2 root root 4.0K Feb 20 19:39 .
drwxr-xr-x 3 root root 4.0K Feb 20 19:39 ..
-rw-r--r-- 1 root root 0 Feb 20 19:39 1
./b:
total 16K
drwxr-xr-x 4 root root 4.0K Feb 20 19:39 .
drwxr-xr-x 1 root root 4.0K Feb 20 19:40 ..
drwxr-xr-x 3 root root 4.0K Feb 20 19:39 c
drwxr-xr-x 2 root root 4.0K Feb 20 19:39 go
./b/c:
total 12K
drwxr-xr-x 3 root root 4.0K Feb 20 19:39 .
drwxr-xr-x 4 root root 4.0K Feb 20 19:39 ..
drwxr-xr-x 2 root root 4.0K Feb 20 19:39 go
./b/c/go:
total 8.0K
drwxr-xr-x 2 root root 4.0K Feb 20 19:39 .
drwxr-xr-x 3 root root 4.0K Feb 20 19:39 ..
-rw-r--r-- 1 root root 0 Feb 20 19:39 1
./b/go:
total 8.0K
drwxr-xr-x 2 root root 4.0K Feb 20 19:39 .
drwxr-xr-x 4 root root 4.0K Feb 20 19:39 ..
-rw-r--r-- 1 root root 0 Feb 20 19:39 1
./go:
total 8.0K
drwx------ 2 root root 4.0K Feb 20 19:40 .
drwxr-xr-x 1 root root 4.0K Feb 20 19:40 ..
-rw-r--r-- 1 root root 0 Feb 20 19:40 1
推荐阅读
- python - PyQt 5.10 - 为 MacOS 启用高 DPI 支持,像素图质量差
- meshlab - MeshLab:如何实现各个组件的信息
- apache-spark - 生产 Spark Pipeline
- swift - 将文本输入保存到设备
- python - 在达到一定的准确性后,有什么方法可以停止在 Keras 中训练模型?
- mongodb - React Fullstack 应用程序显示 mongodb 连接错误
- android - 尝试从图像文件中解码位图并发送到服务器
- java - 动态更改 side_nav_bar.xml 形状颜色的颜色
- django - 用于开发和生产的 Dockerfile 的单独进程?
- c# - Azure 数据湖:如何获取已处理的文件