docker - 无法使用 composer 在 docker 上运行 laravel 命令

我在 docker 容器上运行 laravel 命令时遇到了一些问题。我使用 php docker 图像并使用复制命令从 composer 图像中获取 composer。之后,我将 composer 添加到我的 $PATH 变量并运行 composer global require laravel/installer 命令。

在构建 docker compose 文件并运行它之后,我打开了我的 php 图像的命令行。在这里,我尝试运行“laravel”命令,但出现以下错误:/bin/sh: laravel:not found。

查看 $HOME/.config/composer/vendor 文件夹我看到 laravel 这里,所以我认为安装是正确的。

我可能在这里完全错了,或者犯了一个愚蠢的新手错误,所以非常感谢任何帮助

下面是我的dockerfile:

FROM php:8.0.14-apache
RUN docker-php-ext-install pdo pdo_mysql

#apache
RUN a2enmod rewrite

#composer

COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer



#add composer to path

ENV PATH="$PATH:$HOME/usr/local/bin/composer"

RUN export PATH="$PATH:$HOME/.composer/vendor/bin"

#update

RUN apt-get update

RUN apt-get -y install nano

#add nodejs

RUN apt-get -y install nodejs npm

COPY . /var/www/html/

RUN npm install

#install laravel

RUN composer global require laravel/installer

回答1

您将 composer 复制到 /usr/local/bin/composer,但将 $HOME/usr/local/bin/composer 添加到路径中。

此外, RUN export ... 不做任何事情,因为每个 RUN 语句都在单独的 shell 中运行。因此,当 RUN 命令完成时,shell 退出并且导出的变量丢失。

尝试这个

FROM php:8.0.14-apache
RUN docker-php-ext-install pdo pdo_mysql

#apache
RUN a2enmod rewrite

#composer
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer

#add composer to path
ENV PATH="$PATH:/usr/local/bin/composer"

#update
RUN apt-get update
RUN apt-get -y install nano

#add nodejs
RUN apt-get -y install nodejs npm

COPY . /var/www/html/

RUN npm install

#install laravel
RUN composer global require laravel/installer

回答2

我已将命令 composer global about 中的“更改的路径”添加到我的 ENV 路径并添加了 /vendor/bin。我不确定将根文件夹中的某些内容添加到 $PATH 变量是否是不好的做法。

所以完整的行看起来像这样:

ENV PATH="$PATH:/root/.config/composer/vendor/bin"

通过添加这一行,我可以运行 laravel 命令

相似文章

最新文章