在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,因此它不应给我此错误消息。
您知道我该如何解决吗?
谢谢!
最佳答案
之所以会这样,是因为您使用的是多阶段构建,而您的composer
第二阶段与以前使用PHP
容器进行的构建无关。具有多阶段的主要用例是产生一些有用的伪像,这些伪像可在以后使用。
因此,我建议您从composer
图像复制 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/composer
WORKDIR /var/www
ARG USER_ID
RUN useradd -s /bin/bash -d /home/user/ -m -G sudo,www-data user -u $USER_ID
RUN apt update && apt install -y zip unzip wget zlib1g-dev libicu-dev
RUN docker-php-ext-install pdo_mysql intl opcache gd
USER user
RUN wget https://get.symfony.com/cli/installer -O - | bash
ENV 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
关于php - 带有Laravel的Docker因php扩展而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63326609/