LoginSignup
5
2

More than 3 years have passed since last update.

Laravelの開発環境をDockerで構築したらcould not find driver

Posted at

Laravelの開発環境をDockerで構築しようとしてハマったのでメモを残しておきます。

Laravelの開発環境をDockerで構築する方法は以下を参照してください。
Dockerを使って1コマンドで起動できるLaravel開発環境を構築する

以下のようにDockerfileを作成しました。

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
5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2