共计 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
进一步剥离不需要的文件夹。
正文完