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

Docker容器化PHP项目报错:找不到vendor/autoload.php文件求助

解决Docker PHP容器中vendor/autoload.php不存在的问题

问题根源

报错的核心是容器内/var/www/html/vendor/autoload.php文件缺失,由两个配置冲突导致:

  1. Dockerfile执行顺序错误:你先通过composer install生成了vendor目录,随后执行COPY src/ /var/www/html/,若本地src目录无vendor,这一步会直接覆盖容器内刚生成的vendor目录。
  2. 挂载卷覆盖容器内容:docker-compose中把本地./src/挂载到容器/var/www/html/,容器内该目录的所有内容会被本地src完全替代,即便Dockerfile生成了vendor,也会被本地无vendor的src覆盖。

解决方案

方案一:容器内安装依赖(推荐)

调整Dockerfile执行顺序,避免覆盖vendor,同时用匿名卷保护容器内的vendor目录不被挂载覆盖:

  1. 修改PHP Dockerfile:
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
COPY src/ /var/www/html/
RUN composer install --no-dev -d /var/www/html/
  1. 修改docker-compose.yaml:
php:
  build:
    context: .
    dockerfile: php/Dockerfile
  networks:
    - internal
  volumes:
    - ./src/:/var/www/html/
    - /var/www/html/vendor/  # 匿名卷,防止本地挂载覆盖容器内的vendor
    - ./logs/php.log:/var/log/fpm-php.www.log

方案二:本地安装依赖后同步到容器

在本地项目的src目录下执行依赖安装,再通过挂载同步到容器:

cd src
composer install --no-dev

执行完成后,本地src目录会生成vendor目录,保持现有Dockerfile和docker-compose配置即可。

验证方法

进入容器查看目录结构,确认vendor目录存在:

docker-compose exec php ls -la /var/www/html/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:11:08