Docker .dockerignore 完全指南
·
Docker .dockerignore 完全指南
.dockerignore就是构建时的.gitignore,不加的话COPY . .会把垃圾全带进去。
基本格式
# 注释
node_modules
.git
.gitignore
.env
.env.local
*.md
README.md
# 忽略根目录的temp
/temp
# 忽略所有temp目录
**/temp
# 忽略temp开头的文件和目录
temp*
# 只忽略src下的test
src/*/*/test
为什么要写.dockerignore
- 构建上下文小:docker build先把整个目录发给daemon,文件越多越慢
- 镜像干净:不该进镜像的东西不进
- 缓存友好:少了无关文件变化,缓存命中的概率更高
- 安全:.env文件不进镜像
各语言模板
Node.js
node_modules
npm-debug.log
.git
.env
.env.*
coverage
test
.vscode
Dockerfile
docker-compose*.yml
*.md
README.md
Python
__pycache__
*.pyc
*.pyo
.git
.env
.venv
venv
.pytest_cache
.mypy_cache
*.egg-info
dist
build
Java
.git
target/
*.class
*.jar
*.war
.idea/
*.iml
.gradle/
build/
Go
.git
*.exe
*.test
vendor/
.idea/
常见坑
- .dockerignore必须在构建上下文根目录,跟Dockerfile同级
- .dockerignore先匹配再排除,顺序影响结果
- 修改.dockerignore不会触发缓存失效(它不是Dockerfile的一部分)
- 如果用了.dockerignore但还在COPY里写了排除的文件,文件不会被复制
**/node_modules比node_modules更彻底(匹配任意深度)
---
每个项目都应该有.dockerignore,跟.gitignore一样是标配。不写就是在给镜像喂垃圾。
更多推荐

所有评论(0)