为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
12345678_0001 2023-10-15 17:26:40
我正在尝试 Dockerize 我的项目(PHP MYSQL 和 PDO)。尽管我添加了脚本来将扩展安装到我的 Dockerfile 中,并且每次构建时都会安装它们,但我仍然收到:“找不到驱动程序”。我检查了一下phpinfo(),司机不在。我删除了所有从头开始构建的图像和容器。相同的结果。有任何想法吗?在我的 docker 文件中,我有以下内容:FROM php:7.4-apacheRUN apt-get update && apt-get upgrade -yRUN 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
查看完整描述

1 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

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


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"]

索引.php


<?php

    phpinfo();

?>

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


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

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

https://img1.sycdn.imooc.com/652bb0940001d7a319350755.jpg

请注意,我的 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_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"]

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

https://img1.sycdn.imooc.com/652bb0a000013c0011060182.jpg

查看完整回答
反对 回复 2023-10-15
  • 1 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号