【问题标题】:Docker: Composer could not find a composer.json file in /appDocker:Composer 在 /app 中找不到 composer.json 文件
【发布时间】:2021-12-01 09:38:01
【问题描述】:

您好,我在 Debian S390x 上运行 Dockerfile 时遇到问题。当我使用命令时:

docker build -t laravel .

我有错误信息:

Composer could not find a composer.json file in /app
To initialize a project, please create a composer.json file. See https://getcomposer.org/basic-usage

我的 Dockerfile:

FROM php:7.4
RUN apt-get update -y && apt-get install -y openssl zip unzip git
RUN apt-get install libonig-dev
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/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

请帮忙

错误图片:

【问题讨论】:

  • 您能分享一下您的Dockerfile 所在目录的内容吗?错误显然是docker在运行composer install时抱怨缺少composer.json文件。
  • root@zDEB:/home/test/Laravel# ls Dockerfile
  • 在您复制COPY . /app 的目录中是否有composer.json 文件?例如,它必须是一个有效的 laravel 项目。所以它会复制所有文件,包括composer.json
  • 我明白了,我必须将它放入我的容器 composer.json 文件中,因为我必须为我的项目安装要求
  • 是的,我弄错了,我以为我会用 laravel 获得清晰的容器,但我必须将我的应用程序放入其中才能运行所有内容,谢谢您的帮助;3

标签: php laravel docker dockerfile debian


【解决方案1】:

您将其复制到错误的目录:

COPY . /app

因为之前你定义了一个工作目录:

WORKDIR /app

内容现在将被复制到:

/app/app

所以把COPY改成当前目录,因为你已经在/app了:

COPY . .

【讨论】:

  • 如果COPY命令的destination是绝对路径,文件将被复制到那里,忽略WORKDIR;就像您在本机 Linux 上 cp composer.json /app 一样。 (源代码总是相对于 build-context 目录,即使它看起来像一个绝对路径。)
猜你喜欢
  • 2016-04-15
  • 2014-02-20
  • 2015-11-01
  • 2013-12-05
  • 2014-10-28
  • 2017-06-29
  • 2017-02-06
  • 2018-08-18
  • 2019-09-09
相关资源
最近更新 更多