##はじめに
docker-composeでPHP7.2 + Apache + MySQL + phpMyAdmin環境を
Dockerに構築したので、自分が詰まった点などを含めて備忘録として書いています。
##ディレクトリ構造
portfolio
|-docker-compose.yml
|-html
└──index.php
|-Dockerfile
|-php.ini
|-mysql
|-phpmyadmin
##docker-compose.yml
こちらの記事のdocker-compose.ymlを参考にコンテナの起動まで出来ました。
参考:docker-compose で PHP7.2 + Apache + MySQL + phpMyAdmin 環境を構築
##発生したエラー①
上記の記事を参考にほぼ出来たのですがサイトを作り始めたところ
could not find driver
というエラーに遭遇しました。
ですのでDockerfileを別に作成しエラーを解決しました。
①まずはdocker-compose.ymlの
image: php:7.2-apache
の部分を下記のようにに変更してください。
build: .
version: '3'
services:
php:
build: .
volumes:
- ./php.ini:/usr/local/etc/php/php.ini
- ./html:/var/www/html
ports:
- 8080:80
②Dockerfileを作成して下記を記述します
FROM php:7.2-apache
RUN docker-php-ext-install pdo_mysql
③コンテナを停止させ、再起動する。
参考:開発環境をDockerにしたら、PDOでcould not find driverが出た
##発生したエラー②
画像のアップロードをする際にexif_imagetype関数を使いバリテーションをしたかったのですが、エラーが出ました。
こちらも解決するためにDockerfileに追加で記述していきます。
FROM php:7.2-apache
RUN apt-get update \
&& apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd exif
RUN docker-php-ext-install pdo_mysql
再度コンテナを停止させ、再起動します。
##まとめ
最初はDockerfileを使用するのは難しいと思いdocker-compose.ymlで環境構築しました。
ですがエラーが発生したことによりDockerfileを使用してみて
よりdockerの理解を深めることができました。