docker build 构建错误 non-printable ASCII characters

850次阅读
没有评论

共计 701 个字符,预计需要花费 2 分钟才能阅读完成。

编写 Dockerfile 尝试 docker build . -t ... 的时候出现如下错误:

ERROR [internal] load build context
ERROR: failed to solve: Internal: rpc error: code = Internal desc = rpc error: code = Internal desc = header key "exclude-patterns" contains value with non-printable ASCII characters

问题探究

多次修改 Dockerfile 文件, 因为是在最开始拉取镜像的时候就会出现这个错误,一度让我以为是我的 FROM 镜像的标签写错了。后来检查了半天问题出在 .dockerignore 文件中。 我的.dockerignore文件指定了中文路径。。。

修改.dockerignore 的文档格式为 UTF-8 With DOM 并没有什么用,原本在这个文件中写入中文目录的目的就是为了忽略掉原始仓库中,一些文档工具类的东西不要打包到镜像中。结果现在才发现这个目录压根不支持中文。

问题思考

大概是以前自己的项目目录都没有使用中文才一直都没发现,docker 还有这个设定。至此我也开始思考,在 git 仓库的根目录下 编写Dokcerfile 在文件中使用 COPY . /app 拷贝整个项目到镜像里进行编译是否合理。这是一个 bug 还是我的用法有问题?

解决办法

.dockerignore 文件中不要包含中文路径就可以了,的解决办法是单独创建了一个 deploy 目录,将要发布的文件通过脚本拷贝到 这个文件夹里。Dokcerfile 文件中 COPY ./deploy /app 进一步剥离不需要的文件夹。

正文完
 4
太阳
版权声明:本站原创文章,由 太阳 2023-11-02发表,共计701字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)