前提
今回でLaradockでImageMagickを使うために色々調べたがなかなか欲しい情報がみつからなかった(調べ方が悪かったかも)のでメモとして記事に残します。
環境
・macOS 10.13.6
・Docker for mac
・Laradock
・Laravel 5.8.35
imageMagickのインストール
1.まずLaradockにはImageMagickを使うための設定が記述されているので設定を変更する。(アプリケーション側の.envではなくLaradockの.envなので注意)
WORKSPACE_INSTALL_IMAGEMAGICK=true // falseから変更
2.こちらは不必要かもしれませんが、updateが入るようにしている(?)行を追加します。
###########################################################################
# ImageMagick:
###########################################################################
USER root
ARG INSTALL_IMAGEMAGICK=false
RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \
apt-get update && \ // この一行を追加
apt-get install -y libmagickwand-dev imagemagick && \
pecl install imagick && \
docker-php-ext-enable imagick \
;fi
3.laradockのディレクトリに移動し作業中であればサービスを停止してください
docker-compose stop
4.すべての止まっているコンテナを削除
$ docker rm `docker ps -a -q`
// or
$ docker rm $(docker ps -aq)
5.イメージの一覧を表示
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
laradock_workspace latest b576054942ca 2 hours ago 1.26GB
laradock_php-fpm latest 80be845e6fb7 20 hours ago 795MB
php 7.2-alpine aaee3469b18d 2 weeks ago 80.3MB
<none> <none> ec4b0d8dfca2 2 months ago 3.54GB
laradock_gitlab latest a20034c08621 2 months ago 1.84GB
laradock_portainer latest b10195297548 2 months ago 77.7MB
laradock_thumbor latest ce79e06a5d4f 2 months ago 1.3GB
laradock_solr latest 9b11c0805800 2 months ago 408MB
laradock_laravel-echo-server latest 108b91a67fa1 2 months ago 327MB
laradock_grafana latest 3021624bbdd2 2 months ago 254MB
⋮
6.php-fpmのイメージを削除する。(自分はworkspaceも関係あるかも...と思ってそちらも削除しました)
$ docker rmi 80be845e6fb7
$ docker rmi b576054942ca
7.コンテナを再作成します (少し時間かかります)
// こちらはご自身の環境によって変えてください。
$ docker-compose up -d nginx mysql phpmyadmin redis workspace
8.workspaceに入り、ImageMagickが入っているか確認します。
$ docker-compose exec --user=laradock workspace bash
// ImageMagickのバージョン確認
$ convert -version
Version: ImageMagick 6.8.9-9 Q16 x86_64 2019-06-15 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules OpenMP
Delegates: bzlib cairo djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png rsvg tiff wmf x xml zlib
こちらが出れば完了となります。
intervention/imageのインストール
1.composerを使って引っ張ってきます
$ composer require intervention/image
2.laravelの[app]/config/app.phpに以下を記述
'providers' => [
.
.
.
/*
* Package Service Providers...
*/
Intervention\Image\ImageServiceProvider::class, // こちらの1行追加
]
'aliases' => [
.
.
.
'Image' => Intervention\Image\Facades\Image::class // こちらの1行追加
]
3.設定ファイルを生成する
$ php artisan vendor:publish
Which provider or tag's files would you like to publish?:
[0 ] Publish files from all providers and tags listed below
[1 ] Provider: BeyondCode\DumpServer\DumpServerServiceProvider
[2 ] Provider: Fideloper\Proxy\TrustedProxyServiceProvider
[3 ] Provider: Illuminate\Foundation\Providers\FoundationServiceProvider
[4 ] Provider: Illuminate\Mail\MailServiceProvider
[5 ] Provider: Illuminate\Notifications\NotificationServiceProvider
[6 ] Provider: Illuminate\Pagination\PaginationServiceProvider
[7 ] Provider: Intervention\Image\ImageServiceProviderLaravel5 // 1で記述した箇所の番号を選択
[8 ] Provider: Laravel\Tinker\TinkerServiceProvider
[9 ] Tag: config
[10] Tag: laravel-errors
[11] Tag: laravel-mail
[12] Tag: laravel-notifications
[13] Tag: laravel-pagination
> 7
Copied File [/vendor/intervention/image/src/config/config.php] To [/config/image.php]
Publishing complete.
5.5からこのようになったようです。
Laravel 5.5では、「vendor:publish」がプロバイダープロンプトを取得します
4.設定を変更
'driver' => 'imagick' // gdから変更
5.使用してみる
use Intervention\Image\Facades\Image;
// intervention/imageのお作法に沿ってImageMagickを使う
$photo = Image::make($file)->getCore(); // $photo = new Imagick($file)と同じ意味