Docker + PHP:8.1.1-FPM 如何安装 imagick php 扩展?

Sam*_*Sam 10 php imagick docker

尝试安装适用于 php 8.1.1 的 imagick。

Dockerfile在我的下面的图片中composer install出现以下错误:

Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Your lock file does not contain a compatible set of packages. Please run composer update.

  Problem 1
    - Root composer.json requires PHP extension ext-imagick ^3.6 but it is missing from your system. Install or enable PHP's imagick extension.

To enable extensions, verify that they are enabled in your .ini files:
    - 
    - /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini
    - /usr/local/etc/php/conf.d/docker-php-ext-calendar.ini
    - /usr/local/etc/php/conf.d/docker-php-ext-gd.ini
    - /usr/local/etc/php/conf.d/docker-php-ext-intl.ini
    - /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
    - /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini
    - /usr/local/etc/php/conf.d/docker-php-ext-pdo_pgsql.ini
    - /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
    - /usr/local/etc/php/conf.d/docker-php-ext-xsl.ini
    - /usr/local/etc/php/conf.d/docker-php-ext-zip.ini
Run Code Online (Sandbox Code Playgroud)

我尝试了各种解决方案

apt install php-imagick给出错误:

Package php-imagick is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source

apt install php8.1-imagick没有找到任何包

添加RUN docker-php-ext-install php-imagickRUN docker-php-ext-install imagick在我的末尾Dockerfile没有找到任何包

Dockerfile

FROM php:8.1.1-fpm

RUN apt-get clean && apt-get update \
    &&  apt-get install -y --no-install-recommends \
        locales \
        apt-utils \
        git \
        libicu-dev \
        g++ \
        libpng-dev \
        libxml2-dev \
        libzip-dev \
        libonig-dev \
        libxslt-dev \
        unzip \
        libpq-dev \
        nodejs \
        npm \
        wget \
        apt-transport-https \
        lsb-release \
        ca-certificates

RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen  \
    &&  locale-gen

RUN curl -sS https://getcomposer.org/installer | php -- \
    &&  mv composer.phar /usr/local/bin/composer

RUN curl -sS https://get.symfony.com/cli/installer | bash \
    &&  mv /root/.symfony/bin/symfony /usr/local/bin

RUN docker-php-ext-configure \
            intl \
    &&  docker-php-ext-install \
            pdo pdo_mysql pdo_pgsql opcache intl zip calendar dom mbstring gd xsl

RUN pecl install apcu && docker-php-ext-enable apcu

RUN npm install --global yarn

WORKDIR /var/www/app/

RUN apt-get install -y libmagickwand-dev
RUN apt-get install -y imagemagick
RUN pecl install imagick

COPY ./app/composer.json ./
COPY ./app/composer.lock ./
Run Code Online (Sandbox Code Playgroud)

Mar*_*dor 25

要安装ImagickPHP 扩展和库,我们需要修改 Dockerfile。

示例如下,首先我们更新系统源和包,然后获取 PHP 扩展运行所需的包。之后我们用来pecl安装它,最后告诉 docker 在列表中启用它PHP Extensions

RUN apt-get update; \
    apt-get install -y libmagickwand-dev; \
    pecl install imagick; \
    docker-php-ext-enable imagick;
Run Code Online (Sandbox Code Playgroud)

旁注:如果您是 bash 新手,想知道为什么它没有一堆 RUN 命令而只有一个命令。只是\将它们链接到下一行。

  • 请在您的答案中添加一些解释,以便其他人可以从中学习 (9认同)