【发布时间】:2022-01-16 11:02:03
【问题描述】:
我正在尝试在 docker 容器中运行一个 laraver 项目。
我的码头文件:
FROM php:8.0.12-cli
...
# Install composer.
ENV COMPOSER_ALLOW_SUPERUSER 1
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/bin --filename=composer --quiet \
&& rm -rf /root/.composer/cache
# Install git.
RUN apt-get update && apt-get install -y git
# Clone laravel project from repo.
RUN git clone https://${USERNAME}:${TOKEN}@github.com/${USERNAME}/api.myproject.com.git
# Copy laravel project to app folder.
RUN cp -r /api.myproject.com/. /app
WORKDIR /app
RUN composer install
一切似乎都很好,但是当我打开应用程序时,我看到了一个错误:
Warning: require(vendor/autoload.php): failed to open stream: No such file or directory
我进入容器发现vendor文件夹是missing,虽然执行composer install命令时没有错误,最后我收到了所有依赖安装成功的通知。
我不明白如何解决这个问题,我唯一的猜测是作曲家可能没有足够的权限来创建供应商目录。
【问题讨论】:
-
克隆到一个目录,然后
cp -rping 将所有内容放到一个不同的 目录中,充其量只是浪费时间。话虽如此,以上内容还不足以说明为什么会丢失该目录。上面的 Dockerfile应该在构建的镜像中创建一个 vendor director。缺少一些重要的细节。 -
您不能使用
RUNcomposer 安装。安装卷时,该文件夹将被删除。你必须在入口点运行composer install。
标签: laravel docker docker-compose composer-php