我们经常做的一件事是在构建 Docker 镜像时将所有源代码打包到 Dockerfile
中。
ADD . /app
我们如何避免以简单的方式包含 .git
目录?
我尝试了使用 ADD [^.]* /app/
完整样本:
docker@boot2docker:/mnt/sda1/tmp/abc$ 查找。
.
。/C
./.git
./Dockerfile
。/好的
./好/a1
docker@boot2docker:/mnt/sda1/tmp/abc$ cat Dockerfile
来自 Ubuntu
添加 [^.]* /app/
docker@boot2docker:/mnt/sda1/tmp/abc$ docker build -t abc 。
将构建上下文发送到 Docker 守护进程 4.096 kB
将构建上下文发送到 Docker 守护进程
步骤 0:来自 ubuntu
---> 04c5d3b7b065
第 1 步:添加 [^.]* /app/
d ---> 5d67603f108b
卸下中间容器 60159dee6ac8
成功建造 5d67603f108b
docker@boot2docker:/mnt/sda1/tmp/abc$ docker run -it abc
root@1b1705dd66a2:/# ls -l app
共 4 个
-rw-r--r-- 1 1000 名员工 30 Jan 22 01:18 Dockerfile
-rw-r--r-- 1 根 0 Jan 22 01:03 a1
-rw-r--r-- 1 根根 0 Jan 22 00:10 c
其次,它将丢失目录结构,因为 good\a1
更改为 a1
。
Docker中的相关源码是 https://github.com/docker/docker/blob/eaecf741f0e00a09782d5bcf16159cc8ea258b67/builder/internals.go#L115
原文由 Larry Cai 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以借助 .dockerignore 文件排除不需要的文件