はじめに

dockerの勉強がてら、docker-composeでPHPのLAMP環境を作成。

ただ、mysqliパッケージがインストールされていなかったので、コンテナに入ってapt-getでインストールを試みました。

しかし、エラーが出てインストールができない。。

まさしく、こんな感じでした 。
https://askubuntu.com/questions/1128673/cannot-install-php7-3-mysqli

パッケージ名を調べたり、色々とコマンドを試すも、全くインストールされない。
mysqliを入れたいだけなのに。。

解決方法

と数時間どハマりして、ふと、「あ、Dockerfileを修正したら。。」ということに気がついたので修正。

FROM php:7.2-fpm

# install composer
RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php && ln -s /usr/bin/composer.phar /usr/bin/composer
RUN apt-get update \
&& apt-get install -y \
git \
zip \
unzip \
vim

RUN apt-get update \
    && apt-get install -y libpq-dev \
    && docker-php-ext-install pdo_mysql pdo_pgsql mysqli

WORKDIR /var/www/html

docker-php-ext-installでPHPの拡張モジュールを指定できるよう。

mysqliを追加してみた。

Dockerfileの変更を反映

docker-compose up -d --build

Dockerfileの変更を反映させるには--buildをつける。

無事、インストール完了。

念の為、インストールされたか確認

コンテナに入って

docker exec -it app bash

確認

php -r "phpinfo();" | grep mysqli

出力結果

mysqli
mysqli.allow_local_infile => Off => Off
mysqli.allow_persistent => On => On
mysqli.default_host => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_pw => no value => no value
mysqli.default_socket => no value => no value
mysqli.default_user => no value => no value
mysqli.max_links => Unlimited => Unlimited
mysqli.max_persistent => Unlimited => Unlimited
mysqli.reconnect => Off => Off
mysqli.rollback_on_cached_plink => Off => Off
API Extensions => mysqli,pdo_mysql

無事、インストールされたことが確認できました〜

ちなみに指定できるExtensionのリストは下記
https://gist.github.com/chronon/95911d21928cff786e306c23e7d1d3f3

| bcmath |
|:--|
| bz2 |
| calendar |
| ctype |
| curl |
| dba |
| dom |
| enchant |
| exif |
| fileinfo |
| filter |
| ftp |
| gd |
| gettext |
| gmp |
| hash |
| iconv |
| imap |
| interbase |
| intl |
| json |
| ldap |
| mbstring |
| mcrypt |
| mysqli |
| oci8 |
| odbc |
| opcache |
| pcntl |
| pdo |
| pdo_dblib |
| pdo_firebird |
| pdo_mysql |
| pdo_oci |
| pdo_odbc |
| pdo_pgsql |
| pdo_sqlite |
| pgsql |
| phar |
| posix |
| pspell |
| readline |
| recode |
| reflection |
| session |
| shmop |
| simplexml |
| snmp |
| soap |
| sockets |
| spl |
| standard |
| sysvmsg |
| sysvsem |
| sysvshm |
| tidy |
| tokenizer |
| wddx |
| xml |
| xmlreader |
| xmlrpc |
| xmlwriter |
| xsl |
| zip |