docker: .dockerignore文件
概述
.dockerignore
文件的作用类似于 git
工程中的 .gitignore
。不同的是 .dockerignore
应用于 docker
镜像的构建,它存在于 docker
构建上下文的根目录,用来排除不需要上传到 docker
服务端的文件或目录docker
在构建镜像时首先从构建上下文找有没有 .dockerignore
文件,如果有的话则在上传上下文到 docker
服务端时忽略掉 .dockerignore
里面的文件列表好处
构建镜像时能避免不需要的大文件上传到服务端,从而拖慢构建的速度、网络带宽的消耗
可以避免构建镜像时将一些敏感文件及其他不需要的文件打包到镜像中,从而提高镜像的安全性
.dockerignore 文件编写方法
.dockerignore
文件的写法和 .gitignore
类似,支持正则和通配符,具体规则如下:
1、每行为一个条目;
2、空行被忽略;
3、构建上下文路径为所有文件的根路径;
文件匹配规则具体语法如下:
符号 | 作用 |
# | 注释 |
* | 匹配0或多个非/的字符 |
? | 匹配1个非/的字符 |
** | 0个或多个目录 |
! | 除...外,需结合上下文语义 |
示例
示例 1:
# comment */*/temp* temp? **/*.md
示例 2:除 README.md
外,所有其他 md
文件都被 docker
忽略
*.md
!README.md
使用案例
Dockerfile
放在 git
仓库根路径下,但 git
工程中有很多真正应用跑起来用不到的文件,如果直接在 Dockerfile
中使用 COPY
或 ADD
指令拷贝文件,那么很显然会把很多不需要的文件拷贝到镜像中,从而会拖慢构建镜像的过程,产生的镜像也比较臃肿解决方法就是编写
.dockerignore
文件,忽略掉不需要的文件,然后放到 docker
构建上下文的根路径下.dockerignore
:.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
)
[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
)
[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
知道、想到、做到、得到
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2021-05-28 使用allure2多语言报告框架生成漂亮的测试报告