Laravelの開発環境をDockerで構築しようとしてハマったのでメモを残しておきます。
Laravelの開発環境をDockerで構築する方法は以下を参照してください。
Dockerを使って1コマンドで起動できるLaravel開発環境を構築する
以下のようにDockerfileを作成しました。
FROM php:7.3-apache
COPY --from=composer /usr/bin/composer /usr/bin/composer
RUN apt-get update && apt-get install -y \
unzip \
libzip-dev \
zlib1g-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& a2enmod rewrite
COPY ./apache2.conf /etc/apache2/apache2.conf
COPY ./php.ini /usr/local/etc/php/php.ini
WORKDIR /var/www/myapp
コンテナを起動してアクセスしてみると、PDOExceptionでcould not find driverが出力されました。
MySQLのPDOドライバが有効になってなかったかと思って、php.iniのexentionのコメントを外すもエラー消えず。
そもそもインストールされてないっぽいです。
対処法はDocker Hub に答えがありました。
======Docker Hub引用=========
PHP Core Extensions
For example, if you want to have a PHP-FPM image with the gd extension, you can inherit the base image that you like, and write your own Dockerfile like this:
FROM php:7.4-fpm
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd
======Docker Hub引用=========
どうやらdocker-php-ext-install
でいけるようです。
最終的にこんな形にして、エラーは解消しました。
FROM php:7.3-apache
COPY --from=composer /usr/bin/composer /usr/bin/composer
RUN apt-get update && apt-get install -y \
unzip \
libzip-dev \
zlib1g-dev \
&& docker-php-ext-install \
zip \
pdo_mysql \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& a2enmod rewrite
COPY ./apache2.conf /etc/apache2/apache2.conf
COPY ./php.ini /usr/local/etc/php/php.ini
WORKDIR /var/www/myapp