動かざることバグの如し

近づきたいよ 君の理想に

PHP DockerにImageMagickをインストールする

環境

  • docker
  • php 7 多分5系でも可能

やりたいこと

公式のphp dockerイメージPHPImageMagickで画像処理を使いたい。

やり方

そのままでは無いので自分でImageMagickを追加する必要がある。がpeclでインストールしてdocker-php-ext-enable imagick するだけなので割と簡単

Dockerfileから継承する形でImageMagickを追加していく。

FROM php:7.4-alpine

RUN apk add --no-cache imagemagick \
&& apk add --no-cache --virtual .phpize-deps imagemagick-dev build-base autoconf libpng-dev libjpeg-turbo-dev libxml2-dev \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
&& apk del .phpize-deps

imagemagickパッケージだけは実行時にも必要なので残しておく必要がある。

確認コード

正常にインストールできていれば以下のようなコードが動くはず

<?php
$im = new Imagick('test.jpg');
$im->writeImage('test.png'); 

対応フォーマット確認

docker run --rm imagick_php php -r 'print_r(Imagick::queryFormats());'

参考リンク