We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
.dockerignore 文件的作用类似于 git 工程中的 .gitignore 。不同的是 .dockerignore 应用于 docker 镜像的构建,它存在于 docker 构建上下文的根目录,用来排除不需要上传到 docker 服务端的文件或目录。
.dockerignore
.gitignore
docker 在构建镜像时首先从构建上下文找有没有 .dockerignore 文件,如果有的话则在上传上下文到 docker 服务端时忽略掉 .dockerignore 里面的文件列表。这么做显然带来的好处是:
.dockerignore 文件的写法和 .gitignore 类似,支持正则和通配符,具体规则如下:
#
文件匹配规则具体语法如下:
.go
| *.md | 匹配根路径下所有以 .md 结尾的文件或目录,但 README.md 除外 |
.md
⚠️注意事项: 如果两个匹配语法规则有包含或者重叠关系,那么以后面的匹配规则为准,比如:
*.md !README*.md README-secret.md
这么写的意思是将根路径下所有以 .md 结尾的文件排除,以 README 开头 .md 结尾的文件保留,但是 README-secret.md 文件排除。
README
README-secret.md
再来看看下面这种写法(同上面那种写法只是对换了后面两行的位置):
*.md README-secret.md !README*.md
这么写的意思是将根路径下所有以 .md 结尾和名称为 README-secret.md 的文件排除,但所有以 README 开头 .md 结尾的文件保留。这样的话 README-secret.md 依旧会被保留,并不会被排除,因为 README-secret.md 符合 !README*.md 规则。
!README*.md
前段时间帮前端同学写了一个 Dockerfile,Dockerfile 放在 git 仓库根路径下,发现 git 工程中有很多真正应用跑起来用不到的文件,如果直接在 Dockerfile 中使用 COPY 或 ADD 指令拷贝文件,那么很显然会把很多不需要的文件拷贝到镜像中,从而会拖慢构建镜像的过程,产生的镜像也比较臃肿。解决方法就是编写 .dockerignore 文件,忽略掉不需要的文件,然后放到 docker 构建上下文的根路径下。.dockerignore 及 Dockerfile 文件内容如下: .dockerignore:
COPY
ADD
Dockerfile
.git _mockData deleted email-templates script static
Dockerfile:
FROM node:8-alpine COPY . /app/node WORKDIR /app/node RUN yarn install EXPOSE 8026 CMD ["yarn", "run", "tool-dev"]
使用 .dockerignore 前后上传到 docker 服务端的构建上下文大小对比: 使用前(73.36MB):
73.36MB
[vagrant@docker]$ docker build -t tool:5.0 -f Dockerfile-frontend-tool . Sending build context to Docker daemon 73.36MB Step 1/6 : FROM node:8-alpine
使用后(11.38MB):
11.38MB
[vagrant@docker]$ docker build -t tool:6.0 -f Dockerfile-frontend-tool . Sending build context to Docker daemon 11.38MB Step 1/6 : FROM node:8-alpine
https://docs.docker.com/engine/reference/builder/#dockerignore-file https://blog.csdn.net/qianghaohao/article/details/87902806
The text was updated successfully, but these errors were encountered:
No branches or pull requests
简介
.dockerignore
文件的作用类似于 git 工程中的.gitignore
。不同的是.dockerignore
应用于 docker 镜像的构建,它存在于 docker 构建上下文的根目录,用来排除不需要上传到 docker 服务端的文件或目录。docker 在构建镜像时首先从构建上下文找有没有
.dockerignore
文件,如果有的话则在上传上下文到 docker 服务端时忽略掉.dockerignore
里面的文件列表。这么做显然带来的好处是:.dockerignore 文件编写方法
.dockerignore
文件的写法和.gitignore
类似,支持正则和通配符,具体规则如下:#
开头的行为注释;文件匹配规则具体语法如下:
.go
结尾的文件或目录,即递归搜索所有路径| *.md
| 匹配根路径下所有以
.md
结尾的文件或目录,但 README.md 除外 |如果两个匹配语法规则有包含或者重叠关系,那么以后面的匹配规则为准,比如:
这么写的意思是将根路径下所有以
.md
结尾的文件排除,以README
开头.md
结尾的文件保留,但是README-secret.md
文件排除。再来看看下面这种写法(同上面那种写法只是对换了后面两行的位置):
这么写的意思是将根路径下所有以
.md
结尾和名称为README-secret.md
的文件排除,但所有以README
开头.md
结尾的文件保留。这样的话README-secret.md
依旧会被保留,并不会被排除,因为README-secret.md
符合!README*.md
规则。使用案例
前段时间帮前端同学写了一个 Dockerfile,Dockerfile 放在 git 仓库根路径下,发现 git 工程中有很多真正应用跑起来用不到的文件,如果直接在 Dockerfile 中使用
COPY
或ADD
指令拷贝文件,那么很显然会把很多不需要的文件拷贝到镜像中,从而会拖慢构建镜像的过程,产生的镜像也比较臃肿。解决方法就是编写.dockerignore
文件,忽略掉不需要的文件,然后放到 docker 构建上下文的根路径下。.dockerignore
及Dockerfile
文件内容如下:.dockerignore:
Dockerfile:
使用
.dockerignore
前后上传到 docker 服务端的构建上下文大小对比:使用前(
73.36MB
):使用后(
11.38MB
):参考资料
https://docs.docker.com/engine/reference/builder/#dockerignore-file
https://blog.csdn.net/qianghaohao/article/details/87902806
The text was updated successfully, but these errors were encountered: