You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

COPY指令无法将Symfony项目复制到PHP容器,原因何在?

问题原因

核心问题出在**Docker构建上下文(context)**的设置上:

  • docker-compose.yml中php服务的build.context设为了./docker/php,这意味着Docker构建时只会把docker/php目录下的文件作为构建上下文。
  • 你在Dockerfile里写的COPY . /var/www/symfony,这里的.指代的是构建上下文(也就是docker/php目录),而非Symfony项目根目录。如果docker/php目录里没有项目文件,复制到容器里的/var/www/symfony自然是空的。
解决方法

有两种常见的修正方式:

方式一:修改docker-compose.yml的构建上下文

把php服务的构建上下文改为项目根目录,同时指定Dockerfile的路径:

version: "3"

services:
    php:
        build:
            context: .  # 改为项目根目录作为构建上下文
            dockerfile: ./docker/php/Dockerfile  # 指定Dockerfile的位置
    nginx:
        build:
            context: ./docker/nginx
        ports:
            - 80:80

此时Dockerfile里的COPY . /var/www/symfony就能正确复制项目根目录的所有文件到容器内的目标路径。

方式二:修改Dockerfile的COPY路径(不推荐,灵活性差)

如果坚持使用./docker/php作为构建上下文,需要在Dockerfile里指定相对于该上下文的项目路径,比如COPY ../../. /var/www/symfony。但这种方式依赖固定的目录层级,容易出错,不推荐使用。

额外注意事项
  • 修改配置后,需要重新构建镜像:执行docker-compose build php,再启动容器。
  • 如果项目根目录有.dockerignore文件,要确保没有忽略需要复制的文件或目录,否则也会导致目标目录内容缺失。

内容的提问来源于stack exchange,提问作者tolga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 03:05:48