由于 php 扩展,Docker 与 laravel 失败

Laravel在服务器上运行appache

docker-compose up --build使用以下内容构建图像后Dockerfile

FROM php:7.3-apache-stretch
RUN apt-get update -y && apt-get install -y libpng-dev
RUN docker-php-ext-install pdo pdo_mysql gd

FROM composer:1.9.0 as build
WORKDIR /app
COPY . /app
RUN composer global require hirak/prestissimo && composer install

我收到错误消息:

phpoffice/phpspreadsheet 1.13.0 requires ext-gd * -> the requested PHP extension gd is missing from your system.

命令运行时会发生这种情况composer install

正如你所看到的,我实际上是从 php 安装 gd,所以它不应该给我这个错误消息。

你知道我该如何解决吗?


HUX布斯
浏览 123回答 2
2回答

红糖糍粑

发生这种情况是因为您正在使用多阶段构建,而您的composer第二阶段与之前使用容器的构建无关PHP。多阶段的主要用例是生成一些可供以后使用的有用工件。所以我的建议是从composer图像复制作曲家文件,然后将其放置在php容器中的某个位置。我会给你我的解决方案,它对我来说非常适合laravel/symfony等。FROM php:7.4.4-fpm# We copy composer from it's original image to our php container to use it later.COPY --from=composer:1.9 /usr/bin/composer /usr/bin/composerWORKDIR /var/wwwARG USER_IDRUN useradd -s /bin/bash -d /home/user/ -m -G sudo,www-data user -u $USER_IDRUN apt update && apt install -y zip unzip wget zlib1g-dev libicu-devRUN docker-php-ext-install pdo_mysql intl opcache gdUSER userRUN wget https://get.symfony.com/cli/installer -O - | bashENV PATH="/home/user/.symfony/bin:${PATH}"COPY php.ini /usr/local/etc/php# You can also run here composer install, depends on your use case

繁华开满天机

您可以更改您的泊坞窗图像。例如尝试这个:FROM richarvey/nginx-php-fpmWORKDIR /appRUN php ./artisan config:cache && composer install
打开App,查看更多内容
随时随地看视频慕课网APP