Dockerfile書き換え。
DockerでConoHaのインスタンスを建てて、KUSANAGI(Wordpress)を導入するの番外編。
問題発生
画像をアップロードした時に別のサイズが作られない
Wordpressに画像をアップロードすると、アイキャッチ用やモバイル用など様々なサイズの画像が自動で生成されます。
なぜかjpegの時だけ作られていませんでした。ナゼ。
とりあえずググる。
GDってのが使われているらしいぞ。
php infoを見てみる
GDのところを見るが、PNGやGIFなどの表記があるのにJPEGはない。
普通にインストールしたGDでは、JPEGは扱えないらしい
php再インストールからやらなきゃかな...
Dockerfileを探す
前の記事で示したdocker-compose.yml
から、dockerイメージの元となるDockerfile
を探します。
...
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のバージョンを指定しないようにします。
-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で良いのかはよくわからなかった...
...
+ && 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のあるディレクトリまでのパスを書いてください
...
- image: primestrategy/kusanagi-php7:7.0.6-1
+ build:
+ context: [path/to/Dockerfile/directory]
後は前の記事に沿って実行する
前の記事の「docker-machineの情報を設定する」くらいが続きになるはずです。
頑張ってください!