Debian S390x执行docker build构建Laravel镜像提示找不到composer.json
问题排查与解决
报错的核心原因是composer install执行时,/app目录下不存在composer.json配置文件,按优先级排查解决即可:
常见原因1:构建命令执行路径错误
你执行docker build -t laravel .的当前工作目录不是Laravel项目的根目录,导致COPY . /app指令没有把包含composer.json的项目文件复制到镜像内。
验证方法:在执行构建命令的目录下运行如下指令,检查是否有composer.json输出:
ls composer.json
解决方法:cd到Laravel项目根目录后,重新执行构建命令即可。
常见原因2:.dockerignore规则过滤了composer.json
如果当前目录确实存在composer.json,检查同目录下的.dockerignore文件,是否存在composer.json、*.json或者/.*这类会匹配到composer.json的忽略规则。
解决方法:删除对应忽略规则后重新构建即可。
可选优化:精简Dockerfile冗余配置
你当前的Dockerfile存在重复安装composer的冗余逻辑,可调整为如下版本,减少镜像构建时间和体积:
FROM php:7.4 RUN apt-get update -y && apt-get install -y openssl zip unzip git libonig-dev # 单次安装composer即可 RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer RUN docker-php-ext-install pdo mbstring WORKDIR /app COPY . /app RUN composer install CMD php artisan serve --host=0.0.0.0 --port=8181 EXPOSE 8181
内容的提问来源于stack exchange,提问作者molek06
相关产品推荐
相关产品推荐

