为什么需要.dockerignore及最佳实践

1. 为什么需要.dockerignore文件

当使用docker build构建镜像的时,默认会将Dockerfile所在目录下的所有文件或文件夹,添加到构建docker镜像的上下文中,如果该上下文中包含太多不需要的文件或文件夹,将导致构建速度变慢。如:构建node项目镜像,上下文包含node_modules文件夹,该文件夹中包含N多运行时不需要的文件或文件夹,严重降低docker build速度。

[root@influx jdk1.8.0_191-centos7.6.1810]# ls -al
total 187304
drwxr-xr-x  2 root root      4096 Jul 23 17:20 .
drwxr-xr-x 14 root root      4096 Jul 23 17:29 ..
-rwxr-xr-x  1 root root       392 Jul 15 15:32 build-push.sh
-rwxr-xr-x  1 root root       153 Jul 15 15:32 build-run.sh
-rwxr-xr-x  1 root root       138 Jul 15 15:32 build.sh
-rwxr-xr-x  1 root root       125 Jul 15 16:01 config.sh
-rw-r--r--  1 root root       840 Jul 23 17:20 Dockerfile
-rw-r--r--  1 root root        51 Jul 15 15:32 .dockerignore
-rwxr-xr-x  1 root root      5638 Jul 15 15:32 dump.sh
-rw-r--r--  1 root root 191753373 Jul 15 15:49 jdk-8u191-linux-x64.tar.gz
[root@influx jdk1.8.0_191-centos7.6.1810]# ./build.sh 
Sending build context to Docker daemon  191.8MB # 构建时,创建上下文的步骤,此处可知上下文大小为191MB
Step 1/12 : FROM thub.xxxx.com.cn/digo/centos7.6.1810:2019-07-23_15-00-00
 ---> 4331b9283ea1
......

2. 存放位置

默认与Dockerfile文件同级目录

3. 最佳实践

  • 常规的做法-排除法
    与.gitignore的常规做法一样,排除不需要的文件或文件夹
  • 最佳实践-包含法
    实际构建过程中,上下文需要的文件或文件夹只占整个项目所有文件或文件夹中的一小部分,尤以java项目突出,构建时,上下文只需要一个jar或war包即可。所以我们建议:.dockerignore中配置只包含需要的文件或文件夹即可,更为简洁、方便。

4. 包含法-应用实例

  • 需求
    构建一个springboot项目镜像,上下文只要jar包和Dockerfile本身即可
  • .dockerignore写法
# 目的:提升docker编译速度
# 做法:排除所有,包含需要的
# Reference: https://stackoverflow.com/questions/28097064/dockerignore-ignore-everything-except-a-file-and-the-dockerfile

# Ignore everything
**

# Allow files and directories
!source/template-provider/target/template.jar
!Dockerfile

转载于:https://my.oschina.net/andChow/blog/3078351

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值