我们经常做的一件事就是将所有源代码打包在Dockerfile
当我们构建 Docker 镜像时。
ADD . /app
我们怎样才能避免包括.git
目录以简单的方式?
我尝试使用 Unix 方式来处理这个问题ADD [^.]* /app/
完整样本:
docker@boot2docker:/mnt/sda1/tmp/abc$ find .
.
./c
./.git
./Dockerfile
./good
./good/a1
docker@boot2docker:/mnt/sda1/tmp/abc$ cat Dockerfile
FROM ubuntu
ADD [^.]* /app/
docker@boot2docker:/mnt/sda1/tmp/abc$ docker build -t abc .
Sending build context to Docker daemon 4.096 kB
Sending build context to Docker daemon
Step 0 : FROM ubuntu
---> 04c5d3b7b065
Step 1 : ADD [^.]* /app/
d ---> 5d67603f108b
Removing intermediate container 60159dee6ac8
Successfully built 5d67603f108b
docker@boot2docker:/mnt/sda1/tmp/abc$ docker run -it abc
root@1b1705dd66a2:/# ls -l app
total 4
-rw-r--r-- 1 1000 staff 30 Jan 22 01:18 Dockerfile
-rw-r--r-- 1 root root 0 Jan 22 01:03 a1
-rw-r--r-- 1 root root 0 Jan 22 00:10 c
其次,它将丢失目录结构,因为good\a1
更改为a1
.
Docker中相关源码为https://github.com/docker/docker/blob/eaecf741f0e00a09782d5bcf16159cc8ea258b67/builder/internals.go#L115 https://github.com/docker/docker/blob/eaecf741f0e00a09782d5bcf16159cc8ea258b67/builder/internals.go#L115
您可以借助以下命令排除不需要的文件.dockerignore 文件 https://docs.docker.com/engine/reference/builder/#dockerignore-file
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)