使用az acr build构建镜像失败,提示找不到指定路径的editorconfig文件
问题:az acr build构建.NET 6项目镜像失败,找不到editorconfig文件
我在Windows环境下手动构建.NET 6项目的Docker镜像并上传至Azure容器注册表,在Dockerfile所在目录执行命令:
az acr build --registry MyContainerRegistry --image project/imagename:v1 .
收到如下错误信息:
Packing source code into tar to upload... [WinError 3] The system cannot find the path specified: '.\some_directory_hierarchy\obj\Debug\netcoreapp3.1\OneOfMyProjects.GeneratedMSBuildEditorConfig.editorconfig'
该文件未在Dockerfile中引用,且editorconfig并非构建过程必需文件,从错误首行可知Dockerfile的步骤尚未执行。
补充说明:
- 已登录Azure
- 相同操作曾成功将同项目的多个镜像上传至同一注册表
- 使用
docker build执行同一Dockerfile可成功完成构建
请问为何az acr build无法正常工作?
分析与解决方法
核心原因
az acr build与docker build的工作机制存在本质差异:
docker build由本地Docker守护进程执行,仅会根据Dockerfile中的COPY/ADD指令复制指定文件到构建上下文,未被引用的文件不会参与构建流程。az acr build会将当前目录下所有文件和子目录打包成tar包上传至Azure容器注册表的远程构建环境,打包过程会遍历整个目录。若存在损坏的临时文件(如obj目录下生成的GeneratedMSBuildEditorConfig.editorconfig)、路径权限问题或文件被意外删除,就会触发找不到路径的错误,且此时Dockerfile的构建步骤尚未开始执行。
解决办法
清理本地构建缓存
执行.NET清理命令,清除项目的临时构建目录:dotnet clean清理完成后重新运行
az acr build命令,避免残留的损坏临时文件影响打包流程。配置
.dockerignore文件
在Dockerfile所在目录创建或完善.dockerignore文件,添加以下内容以排除无需上传的目录和文件:bin/ obj/ *.user *.suo .vs/该文件会让
az acr build在打包时忽略指定内容,既减少上传体积,又避免临时文件引发的路径问题。检查目录访问权限
确保当前Windows用户对项目根目录及所有子目录拥有完整的读取权限,避免因权限不足导致系统无法访问指定路径。
内容的提问来源于stack exchange,提问作者Maurice Klimek
相关产品推荐
相关产品推荐

