web-dev-qa-db-ja.com

PHP Dockerイメージでpdo_mysqlを有効にする方法

基本的なDockerfileがあり、次のものが含まれています。

FROM php:7.1-Apache
RUN apt-get update && docker-php-ext-install pdo_mysql
COPY . /var/www
EXPOSE 80

Docker-compose.ymlファイルがあります

version: "3"
services:
  app:
    build: .
    ports:
      - "80:80"
    volumes:
      - .:/var/www
    depends_on:
      - mysql
  mysql:
    image: mysql:8
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: "app"
      MYSQL_USER: "app"
      MYSQL_PASSWORD: "app"
      MYSQL_ROOT_PASSWORD: "test"

その後、docker build -t app . && docker-compose upプロジェクトのルート。すべてが正しくビルドされているようですが、phpinfoを出力すると、mysql_pdo拡張が表示されません。

enter image description here

足りないステップはありますか?

15
Tom

私が使用するDockerファイルは...

FROM php:7.1-Apache
COPY Apache2.conf /etc/Apache2
RUN docker-php-ext-install mysqli pdo pdo_mysql

PDO/mysqlビットを許可するために、mysqliとpdoもそこにあることに注意してください。

11
Nigel Ren

PHP MySQLに接続するためのPDOおよびmysqli拡張機能をDockerfileに追加するには:

RUN docker-php-ext-install pdo pdo_mysql
# for mysqli if you want
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli

作成方法の詳細については、この ページ をご覧ください。

1

docker php issue 62に同様のエラーがありました

古い画像を削除して再構築する必要があることがわかりました。

原因画像をダウンロードして編集しました。変更を適用するには、古いイメージを削除して再構築する必要があります。

docker rmはコンテナーのみを削除します。前にも画像を削除してください。

このようなDockerfile がより堅牢/完全であるかどうかも確認します。

# PHP extensions
RUN \
    docker-php-ext-configure pdo_mysql --with-pdo-mysql=mysqlnd \
    && docker-php-ext-configure mysqli --with-mysqli=mysqlnd \
    && docker-php-ext-install pdo_mysql \
    ...
1
VonC