Dockerのphp:XX-apacheでpdo_mysqlを使用したい時は


よくあるPHPのLAMP環境をDockerで再現しようとした時

  • Dockerfile
FROM php:7.2-apache
WORKDIR /var/www/html/
RUN echo "<?php" > index.php && echo "phpinfo();" >> index.php

でDocker起動

docker build -t phptest .
docker run -it -d --name phptest2021 -p 80:80 phptest:latest

localhostでphpinfoを見てみると

ああ、sqliteしかないのか・・

MySQLやMariaDBを使用したいので、
https://www.php.net/manual/ja/ref.pdo-mysql.php
これが使いたいんですよね・・

そんな時は

docker-php-ext-install

を使う。

  • Dockerfile 書き直す。
FROM php:7.2-apache
RUN docker-php-ext-install pdo_mysql && docker-php-ext-enable pdo_mysql
WORKDIR /var/www/html/
RUN echo "<?php" > index.php && echo "phpinfo();" >> index.php

でもう一度Docker起動

docker build -t phptest .
docker run -it -d --name phptest2021 -p 80:80 phptest:latest

localhostでphpinfoを見てみると

PDOが使用で切ることを確認。

  • おまけ
docker-php-ext-install

このコマンドを知らなかったときは
https://pentan.info/php/pdo_mysql_install.html
直接上記をやろうとして時間を浪費しました。
他にも

docker-php-ext-install mysqli mbstring gd iconv

色々インストールできます。