Help us understand the problem. What is going on with this article?

KUSANAGI RODのphp7でphp-gdのJPEGを有効にする

More than 1 year has passed since last update.

Dockerfile書き換え。
DockerでConoHaのインスタンスを建てて、KUSANAGI(Wordpress)を導入するの番外編。

問題発生

画像をアップロードした時に別のサイズが作られない

Wordpressに画像をアップロードすると、アイキャッチ用やモバイル用など様々なサイズの画像が自動で生成されます。
なぜかjpegの時だけ作られていませんでした。ナゼ。

とりあえずググる。

GDってのが使われているらしいぞ。

php infoを見てみる

GDのところを見るが、PNGやGIFなどの表記があるのにJPEGはない。

普通にインストールしたGDでは、JPEGは扱えないらしい

php再インストールからやらなきゃかな...

Dockerfileを探す

前の記事で示したdocker-compose.ymlから、dockerイメージの元となるDockerfileを探します。

docker-compose.yml
...
kusanagi-php7
  image: primestrategy/kusanagi-php7:7.0.6-1
...

dockerhub の primestrategy/kusanagi-php7を確認します。
(URLが明示されていないときはdockerhubから取ってくる仕様らしいです)
https://hub.docker.com/r/primestrategy/kusanagi-php7/

Source Repository にgithubのリンクがあったので確認します。
それっぽいのでクローンしてみます。

$ git clone --depth 1 --single-branch https://github.com/prime-strategy/kusanagi-php7.git

コンテナをビルドしてみる

とりあえずクローンしてきたDockerfileを使ってコンテナをビルドしてみます。

$ ls
Dockerfile
$ docker build .

残念...

エラーが出ました。

原因

Dockerfileで指定されているmariadbのバージョンが古いためでした。
(この確認のために && で繋がれているコマンドを一行ずつに分けて記述してビルドしたりしました。他にいい方法があれば教えて...)
apk(alpineのパッケージ管理ツール)でとってこれるバージョンが変わってしまっているようです。

改善

本当であれば指定されていたmariadbのバージョンのソースを取ってきてビルドした方が良いと思います。
面倒なので今回はmysqlのバージョンを指定しないようにします。

Dockerfile
-ARG MYSQL_VERSION=10.1.21-r0
+# ARG MYSQL_VERSION=10.1.21-r0
...
-               mariadb=$MYSQL_VERSION \
-               mariadb-dev=$MYSQL_VERSION \
+               # mariadb=$MYSQL_VERSION \
+               # mariadb-dev=$MYSQL_VERSION \
+               mariadb \
+               mariadb-dev \

再度ビルドしてみる

今度は上手くいった。
(warningはたくさん出ているけども...とりあえず大丈夫なはず...)

$ ls
Dockerfile
$ docker build .

gdのjpeg利用設定

docker-php-ext-installの前にgdでjpegを使用する設定のコマンドを書いておきます。
--with-jpeg-dirにつけるパスが、なぜ/usrで良いのかはよくわからなかった...

Dockerfile
     ...
+    && docker-php-ext-configure gd --with-jpeg-dir=/usr \
     && docker-php-ext-install \
     ...

ビルドする

-t でイメージに名前をつけています。

$ ls
Dockerfile
$ docker build . -t php7-enable-jpeg

ちゃんとgdのjpegサポートができているか確認

$ docker run -it --rm php7-enable-jpeg /bin/sh
/var/www/html # php --info | grep -A10 GD
...
JPEG Support => enabled
...

docker-compose.ymlを書き換える

build: context にDockerfileのあるディレクトリまでのパスを書いてください

docker-compose.yml
...
-    image: primestrategy/kusanagi-php7:7.0.6-1
+    build:
+      context: [path/to/Dockerfile/directory]

後は前の記事に沿って実行する

前の記事の「docker-machineの情報を設定する」くらいが続きになるはずです。

頑張ってください!

参考

tpywao
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした