docker compose构建报COPY路径超出上下文错误是否为context设置问题?
Docker Compose COPY路径超出构建上下文错误解决方案
是的,该错误就是由build context配置错误直接导致的。
Docker构建时只能读取**构建上下文(build context)**目录内的文件,无法访问上下文目录之外的路径。你当前在project/deployment目录执行命令,compose配置里的context: .代表上下文就是当前的deployment目录,Dockerfile里用../向上访问上层目录的services和.env自然会超出权限限制。
修复步骤
- 第一步:修改
docker-compose.yml里的build配置,将上下文调整为项目根目录,同时指定Dockerfile的相对路径(相对于新的上下文):
x-env: &env HOST: 127.0.0.1 services: widget: build: context: .. # 上下文切换到上级的Project根目录 dockerfile: deployment/Dockerfile # 指定Dockerfile的路径(相对于Project根) ports: - 3002:3002 command: npm start environment: <<: *env restart: always
- 第二步:修改Dockerfile里的COPY语句,路径改为相对于Project根目录的写法:
# 替换原来的COPY语句 COPY ./services/ui/widget/ /app/ COPY ./.env /app/
- 可选优化:你可以在
Project根目录新增.dockerignore文件,排除不需要传入构建上下文的内容(比如node_modules、临时日志、git文件等),减少构建包体积、提升构建速度。
修改完成后,仍在deployment目录执行docker-compose up即可正常构建。
内容的提问来源于stack exchange,提问作者Code Guru
相关产品推荐
相关产品推荐

