猿问

找不到 docker-compose pdo-mysql 驱动程序

我正在尝试 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


12345678_0001
浏览 113回答 1
1回答

茅侃侃

对于我执行的测试,我执行了以下操作:Dockerfile -FROM php:7.4-apacheRUN apt-get update && apt-get upgrade -yRUN docker-php-ext-install pdo pdo_mysqlCOPY $PWD/index.php /var/www/htmlEXPOSE 80# start Apache2 on image startCMD ["/usr/sbin/apache2ctl","-DFOREGROUND"]索引.php<?php&nbsp; &nbsp; phpinfo();?>运行命令(我将图像命名为 pdo-test):docker run --name=pdo-test -p 8080:80&nbsp; -d pdo-test容器启动后,我导航到 HTTP://localhost:8080/index.php 并看到 PDO 驱动程序已加载:请注意,我的 Dockerfile 和你的 Dockerfile 之间的唯一区别是,我将 PHP 页面复制到其中,/var/www/html并添加了一个在容器运行时启动 Apache 的命令。您应该检查的事项:您安装的卷是否正确./php:/var/www/html由于您没有执行 Apache 的命令,请确认它在容器中正常启动。我测试了这两种方法并且每次都会启动,但是您应该猛击容器并确保 Apache 按您的预期运行。编辑我从容器复制了 php.ini 文件之一docker cp pdo-test:usr/local/etc/php/php.ini-production php.ini并取消注释 PDO 驱动程序:;extension=openssl;extension=pdo_firebirdextension=pdo_mysql;extension=pdo_oci;extension=pdo_odbcextension=pdo_pgsql;extension=pdo_sqlite;extension=pgsql然后我重建了容器,复制更新后的 php.ini 文件:FROM php:7.4-apacheRUN apt-get update && apt-get upgrade -yRUN docker-php-ext-install pdo pdo_mysqlCOPY $PWD/index.php /var/www/htmlCOPY $PWD/php.ini /usr/local/etc/phpEXPOSE 80# start Apache2 on image start# CMD ["/usr/sbin/apache2ctl","-DFOREGROUND"]我现在可以看到 php.ini 文件phpinfo()
随时随地看视频慕课网APP
我要回答