Docker构建时如何忽略根目录指定文件夹(Dockerfile在子目录)
Docker构建时.dockerignore不生效的解决方法
问题根源
你执行docker build时指定的构建上下文是根目录(命令末尾的.),Docker只会加载上下文根目录下的.dockerignore文件,而你把.dockerignore放在了build子目录中,这个配置完全没被Docker读取,所以忽略规则不生效。
正确配置方案
方案1:将.dockerignore移到根目录(推荐)
把build目录下的.dockerignore移动到项目根目录,修改内容为:
node_modules .vscode .git
因为构建上下文是根目录,直接写这些相对路径即可,不需要加../前缀。
方案2:调整构建上下文(不推荐,易出错)
如果一定要保留build目录下的.dockerignore,需要将构建上下文改为build目录,同时调整docker build命令和Dockerfile中的路径:
- 修改
build目录下的.dockerignore内容为:
../node_modules ../.vscode ../.git
- 执行构建命令时,切换到
build目录,或者指定上下文为build目录:
# 切换到build目录后执行 docker build -t dtest_sec -f Dockerfile ../ # 或者从根目录执行 docker build -t dtest_sec -f build/Dockerfile build/
注意:这种方式下,Dockerfile中的COPY/ADD指令需要调整路径,因为构建上下文变成了build目录,访问根目录的文件要使用../前缀,容易引发路径错误,因此优先推荐方案1。
内容的提问来源于stack exchange,提问作者10raw
相关产品推荐
相关产品推荐

