Dockerfile中COPY/ADD无法复制被.gitignore忽略的public文件夹
Docker构建时找不到.gitignore忽略的public文件夹问题解决
问题根源
当Docker构建上下文是Git仓库时,默认会继承.gitignore的忽略规则,哪怕没有创建.dockerignore文件。这就是为什么你把public从.gitignore移除后构建正常——此时Docker能在构建上下文中访问到该文件夹;而空的.dockerignore不会覆盖.gitignore的规则,所以问题依旧。
可行解决方案
方案1:保留.gitignore规则,用.dockerignore强制包含public(推荐)
在项目根目录创建或修改.dockerignore文件,添加以下内容:!public这条规则会让Docker忽略.gitignore中对public的限制,强制将该文件夹纳入构建上下文,同时不影响.gitignore对其他文件的忽略。
方案2:修改.gitignore(仅当无需Git忽略public时使用)
直接从.gitignore中删除public条目,这是你已经验证有效的方法,但会让Git追踪该文件夹的内容。方案3:确保构建上下文指向当前目录
执行构建命令时明确指定当前目录为上下文:docker build .注:如果项目本身是Git仓库,此方法可能仍受.gitignore影响,不如方案1可靠。
验证操作
- 按方案1配置好.dockerignore
- 确认.gitignore中仍保留
public条目 - 重新运行Docker构建命令,即可正常复制public文件夹
内容的提问来源于stack exchange,提问作者Reza
相关产品推荐
相关产品推荐

