Dockerfile构建时COPY上级目录api文件失败问题求助
问题解决方案
错误原因
Docker构建过程中只能访问构建上下文目录内的文件,你当前配置中php服务的构建上下文设为了./php目录,无法访问上层的api目录,所以执行COPY ../api/xxx语句时会直接报错。
修复步骤
步骤1:修改docker-compose.yml配置
调整php服务的构建参数,将构建上下文改为项目根目录,同时显式指定Dockerfile的路径:
services: php: build: context: . # 构建上下文改为项目根目录 dockerfile: ./php/Dockerfile # 指定Dockerfile的实际存放路径 ports: - '9000:9000'
步骤2:修改Dockerfile中的COPY路径
将php/Dockerfile内原来的上级目录引用改为相对于项目根目录的路径:
把原有的两行COPY语句:
COPY ../api/composer.json . COPY ../api/. .
替换为:
COPY ./api/composer.json . COPY ./api/. .
可选校验
如果你的项目根目录存在.dockerignore文件,确认文件中没有排除api目录的规则,避免文件被过滤无法复制。
修改完成后重新执行docker-compose up -d --build即可正常构建。
内容的提问来源于stack exchange,提问作者ThomasM
相关产品推荐
相关产品推荐

