前提
本文的预期读者是熟练使用docker命令的开发者,有过编写dockerfile经验的开发者。
场景
一般开发过程中,上下文环境目录中会存放很多不需要放到镜像中的内容,忽略掉上下文环境目录中的特定内容,可以大大提高生成镜像的速度。
实现方式
在上下文环境根目录下增加一个名字固定为.dockerignore的文本文件,用于剔除不需要作为上下文内容传递给引擎的内容。
基础使用
- 忽略上下文环境中所有内容
*
- 不忽略上下文环境中特定内容
!/file
- 以通配符忽略上下文环境中特定内容
/folder/*.tmp
- 以通配符不忽略上下文环境中特定内容
!/script/*
使用举例
-
.dockerignore
* !/script/* !/data/* !/tool/*
-
dockerfile
# 基础镜像 FROM nginx # 拷贝数据 COPY /script/ /home/platform/ COPY /tool/ /usr/local/bin/platform/ COPY /data/ /data/platform/ # 指定工作目录 WORKDIR /home/platform/ # 指定启动容器入口 ENTRYPOINT ["/bin/bash"]
-
build
docker build -f ./build/dockerfile -t harbor.callmefor.com/root/paltform:1.0.0 ../
-
目录
. ├─ docker/ ├─ build/ ├─ dockerfile ├─ deploy/ ├─ data/ ├─ image.jpg ├─ script/ ├─ deploy.sh ├─ tool/ run.sh ├─ .dockerignore
注意
- 编写dockerfile时,路径都是相对于上下文环境根目录。
- 执行build命令时,路径都是相对于执行命令的工作目录。