执行docker-compose up时报dockerfile.v0读取失败权限拒绝错误如何解决
问题根本原因
你遇到的报错是构建上下文配置错误导致的,你的docker-compose.yml中build字段配置为/,代表使用系统根目录作为Docker构建的上下文目录,Windows环境下会遍历当前盘符根目录下的所有文件,遇到System Volume Information这类系统级禁止访问的目录时就会抛出权限异常。修改buildkit配置无法解决问题,因为问题根源和构建引擎无关。
解决方案
第一步:修正docker-compose.yml的build配置
将media-service下的build: /修改为build: .,其中.代表docker-compose.yml文件所在的当前目录,Docker只会读取当前项目目录下的文件作为构建上下文,不会触及系统级目录。
修改后的配置参考:version: '3' services: media-service: container_name: codetech-media build: . ports: - "8011:8081"第二步:确认项目目录结构符合要求
确保Dockerfile、docker-compose.yml、存放jar包的target目录都在同一个项目目录下,执行docker-compose up命令时也要在该项目目录下执行。第三步(可选):添加.dockerignore过滤文件
在项目目录下新建.dockerignore文件,写入不需要参与构建的目录/文件,减少构建上下文体积同时避免意外读取到无权限文件,示例配置:logs .git *.tmp
修改完成后重新执行docker-compose up即可正常构建。
内容的提问来源于stack exchange,提问作者Dolphy the Reaper
相关产品推荐
相关产品推荐

