执行docker-compose构建时遇文件名过长错误,寻求解决办法
问题描述
执行docker-compose -f local.yml build时触发错误:
failed to solve: lstat /var/lib/docker/overlay2/vknfz4vxqrydzr48xaq4sl2hj/diff/.git/logs/refs/heads/TASK-601-bug-edit-articles-after-publishing-and-saving-as-draft-changes-appears-at-the-same-moment-without-moderation: file name too long
你的猜测完全正确,问题根源就是Git分支名称过长。Docker构建时会扫描上下文目录内的所有文件,而Git会把分支名作为文件名存放在.git/logs/refs/heads/路径下,当分支名长度超出Linux文件系统默认的255字节文件名限制时,就会触发这个报错。
解决方法
重命名分支为短名称
直接修改当前长分支的名称,比如:git branch -m TASK-601-bug-edit-articles-after-publishing-and-saving-as-draft-changes-appears-at-the-same-moment-without-moderation TASK-601-fix-draft-moderation修改完成后重新执行构建命令即可。
构建时排除.git目录
在项目根目录创建.dockerignore文件,添加以下内容:.git/这样Docker构建过程会忽略整个.git目录,不会处理里面的分支日志文件,从根源规避文件名过长的问题。
临时切换短分支构建
如果不想修改当前分支名,可以先切换到短名称分支(比如main/master)完成构建,之后再切回原分支:git checkout main docker-compose -f local.yml build git checkout TASK-601-bug-edit-articles-after-publishing-and-saving-as-draft-changes-appears-at-the-same-moment-without-moderation
内容的提问来源于stack exchange,提问作者Headmaster
相关产品推荐
相关产品推荐

