繁体   English   中英

docker-compose pdo-mysql 驱动未找到

[英]docker-compose pdo-mysql driver not found

我正在尝试 Dockerize 我的项目(PHP MYSQL 和 PDO)。 即使我添加了脚本来将扩展安装到我的 Dockerfile 并且每次构建它时都在安装它们,但我仍然得到:“找不到驱动程序”。 我检查了phpinfo()并且驱动程序不存在。 我删除了所有从头开始构建的图像和容器。 结果相同。 有任何想法吗? 在我的 docker 文件中,我有以下内容:

FROM php:7.4-apache
RUN apt-get update && apt-get upgrade -y
RUN docker-php-ext-install pdo pdo_mysql 
EXPOSE 80

和我的 docker-compose.yaml 文件:

version: '3.3'
services:
  web:
    build:
      context: ./php
      dockerfile: Dockerfile
    container_name: php74
    depends_on:
      - db
    links:
      - db
    volumes:
      - ./php:/var/www/html/
    ports:
      - 8008:80
  db:
     container_name: mysql8
     command: --default-authentication-plugin=mysql_native_password
     image: mysql:latest
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: root
       MYSQL_DATABASE: realDE
       MYSQL_USER: khaldoun
       MYSQL_PASSWORD: password
     ports:
       - 6033:3306

对于我执行的测试,我执行了以下操作:

Dockerfile -

FROM php:7.4-apache
RUN apt-get update && apt-get upgrade -y
RUN docker-php-ext-install pdo pdo_mysql

COPY $PWD/index.php /var/www/html

EXPOSE 80

# start Apache2 on image start
CMD ["/usr/sbin/apache2ctl","-DFOREGROUND"]

index.php

<?php
    phpinfo();
?>

运行命令(我将图像命名为 pdo-test):

docker run --name=pdo-test -p 8080:80  -d pdo-test

容器启动后,我导航到 HTTP://localhost:8080/index.php 并看到 PDO 驱动程序已加载:

在此处输入图像描述

请注意我的 Dockerfile 和你的唯一区别是我将 PHP 页面复制到/var/www/html并添加了一个命令,该命令将在容器运行时启动 Apache。

你应该检查的事情:

  • 是您正在安装的卷正确./php:/var/www/html
  • 由于您没有执行 Apache 的命令,请确认它在容器中正常启动。 我测试了两种方式,每次都启动,但是您应该将 bash 放入容器中,并确保 Apache 按预期运行。

编辑我从容器中复制了 php.ini 文件之一

docker cp pdo-test:usr/local/etc/php/php.ini-production php.ini

并取消注释 PDO 驱动程序:

;extension=openssl
;extension=pdo_firebird
extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
extension=pdo_pgsql
;extension=pdo_sqlite
;extension=pgsql

然后我重建了容器,复制了更新后的 php.ini 文件:

FROM php:7.4-apache
RUN apt-get update && apt-get upgrade -y
RUN docker-php-ext-install pdo pdo_mysql

COPY $PWD/index.php /var/www/html
COPY $PWD/php.ini /usr/local/etc/php

EXPOSE 80

# start Apache2 on image start
# CMD ["/usr/sbin/apache2ctl","-DFOREGROUND"]

我现在可以在phpinfo()中看到 php.ini 文件

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM