例えば、php:7.2-apacheのデフォルトイメージはvimは入ってないし、PHPの環境としてはPDOもGDも入ってないし、Apacheの環境としてはmod_rewriteも有効になっていません。
またphp.iniも編集したいときがあるでしょう。
そんなときはDockerfileを書いてビルドしてやることにより元のイメージにアプリケーションやライブラリを追加したり設定を変更したりすることができます。
上記の問題をまとめて解決しましょう。
・php.ini修正
・vimのインストール
・PHP拡張モジュールpdo_mysqlとgdを追加
・mod_rewrite有効化
※ベースはDebian系のLinuxなのでaptコマンドで!
※PHP拡張モジュールはdocker-php-ext-installコマンドが用意されてる!
[プロジェクト] ┣ conf/ ┃ ┗ php/ ┃ ┗ php.ini ┣ docker-compose.yml ┗ Dockerfile
conf/php/pnp.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
※起動後に変更したら再起動だね。
Dockerfile
FROM php:7.2-apache
# aptライブラリのインデックス更新
RUN apt-get update
# Vimインストール
RUN apt-get install -y vim
# GDに必要なライブラリのインストール
RUN apt-get install -y libfreetype6-dev
RUN apt-get install -y libjpeg62-turbo-dev
RUN apt-get install -y libpng-dev
# PHP拡張モジュールのインストール
RUN docker-php-ext-install pdo_mysql gd
# Apacheのmod_rewrite有効化
RUN a2enmod rewrite
# php.iniを読み込ませる
COPY ./conf/php/php.ini /usr/local/etc/php
docker-compose.yml
version: '3'
services:
mysql:
image: mysql:5.7
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: mypass
volumes:
- ./mysql:/var/lib/mysql
command: --innodb-use-native-aio=0 // 2019.09 この行は不要になっています
web:
# image:->build:に変更してDockerfileの場所を指定
build: .
ports:
- "80:80"
volumes:
- ./html:/var/www/html
depends_on:
- mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOST=mysql
- PMA_USER=root
- PMA_PASSWORD=mypass
links:
- mysql
ports:
- 8080:80
volumes:
- /sessions
buildオプションをつけて起動する!
$ docker-compose up -d --build