Docker构建上下文外:如何将主机php_7文件夹复制到容器?
解决Docker复制主机php_7文件夹到容器的问题
问题根源
你的docker-compose.yml中指定的构建上下文(context)是.docker/php/php7,Docker构建镜像时只能访问上下文目录及其子目录内的文件,无法访问上下文之外的父级目录内容。所以你在Dockerfile中用相对路径向上查找php_7文件夹时,会因为超出上下文范围而找不到文件。
正确解决方案
方法一:修改构建上下文到项目根目录(推荐)
- 更新
docker-compose.yml中php7服务的build配置,将上下文改为项目根目录,并指定Dockerfile的完整路径:
php7: build: context: . # 项目根目录作为构建上下文 dockerfile: .docker/php/php7/Dockerfile # 指定Dockerfile的位置
- 修改Dockerfile中的COPY指令,直接从上下文根目录复制
php_7:
COPY php_7 /var/www/html
- 重新构建容器:
docker-compose down && docker-compose up -d --build
方法二(不推荐):复制文件到上下文目录
如果你坚持使用原上下文,可以先将主机的php_7文件夹复制到.docker/php/php7目录下,再在Dockerfile中使用COPY php_7 /var/www/html。但这种方法需要手动同步文件,维护成本高,不建议使用。
内容的提问来源于stack exchange,提问作者Khaled Boussoffara
相关产品推荐
相关产品推荐

