LoginSignup
2
3

More than 3 years have passed since last update.

LaravelでIntervention/Imageを使う際に、GD拡張機能を使うためのDockerfileの書き方

Last updated at Posted at 2021-04-10

環境

・Docker, docker-composeを用いてLEMP(laravel, php-fpm, nginx, MySQL)環境
・php-fpm7.4
・MySQL8.0
・nginx1.8

概要

LaravelでIntervention/Imageを使って画像のアップロード機能を実装する際に、以下のエラーが出た。

エラー

GD Library extension not available with this PHP installation

「このPHPインストール環境では、GD拡張機能は使えませんよ」という意味。

同様の事例

同様の事例を調べたところ、以下の記事がヒットした。
LaravelでGD Library extension not available with this PHP installation.のエラーが出た時の対処法

この記事によると、「Intervention/Image」はPHP5.4以上では、画像処理ライブラリのGDまたはImageMagickをインストールする必要があり、下記の対処を行えば良いとのこと。

apt-get update
apt-get install php7.0-gd

しかし、Dockerfileに上記apt-get install php7.0-gdを追記してもそんなパッケージはありませんと怒られてしまう。

対処

DockerでGD拡張機能を使うためにDockerfileをどのように書き換えれば良いか模索した結果以下の記事とその参考元のDockerfileの使い方の表記を発見。

DockerでのGD拡張についてPHP/Laravel
https://hub.docker.com/_/php

上記を参考にphp実行環境のDockerfileを以下のように修正

Dockerfile
FROM php:7.4-fpm-buster
SHELL ["/bin/bash", "-oeux", "pipefail", "-c"]

ENV \
  COMPOSER_ALLOW_SUPERUSER=1 \
  COMPOSER_HOME=/composer

COPY --from=composer:2.0 /usr/bin/composer /usr/bin/composer

RUN apt-get update 

RUN apt-get -y install git libicu-dev libonig-dev libzip-dev unzip locales \
+   libfreetype6-dev libjpeg62-turbo-dev libpng-dev && \  //追記:GD拡張に必要なパッケージ
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* && \
    locale-gen en_US.UTF-8 && \
    localedef -f UTF-8 -i en_US en_US.UTF-8 && \
    mkdir /var/run/php-fpm && \
    mkdir /var/log/php && \
    docker-php-ext-install intl pdo_mysql zip bcmath && \
+   docker-php-ext-configure gd --with-freetype --with-jpeg && \ //追記
+   docker-php-ext-install -j$(nproc) gd && \ //追記
    composer config -g process-timeout 3600 && \
    composer config -g repos.packagist composer https://packagist.org

COPY ./php-fpm.d/zzz-www.conf /usr/local/etc/php-fpm.d/zzz-www.conf
COPY ./php.ini /usr/local/etc/php/php.ini

WORKDIR /work/backend

結論

LEMP環境下でGD拡張機能を使えるようにするためには、Dockerfileに下記コードを追記する必要がありました。

apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev
docker-php-ext-configure gd --with-freetype --with-jpeg && \
docker-php-ext-install -j$(nproc) gd

参考

LaravelでGD Library extension not available with this PHP installation.のエラーが出た時の対処法
DockerでのGD拡張についてPHP/Laravel
https://hub.docker.com/_/php
 →特に参考になりました。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3