【问题标题】:PHP 7.1 on Docker PDO Driver not installed - Verified it is on the image未安装 Docker PDO 驱动程序上的 PHP 7.1 - 已验证它在图像上
【发布时间】:2017-07-19 15:30:54
【问题描述】:

我总是收到PDO driver not found 的错误。我尝试重新启动,直接安装 PDO 扩展。请注意,这个 docker 设置昨晚在我的 Linux 机器上运行。唯一的区别是我是从头开始做的,而在我的 Windows 机器上我已经有图像了。

最初收到错误后,我尝试删除图像,但由于某种原因,基础 PHP 图像未能删除。然后我跑了:

  1. docker exec -it php sh
  2. docker-php-ext-install pdo pdo_mysql

运行该命令说明扩展已安装。但我仍然收到错误消息。

我还注意到它与模块一起存在:

/var/www/html # ls /usr/local/etc/php/conf.d/                                
docker-php-ext-pdo_mysql.ini                                                 
/var/www/html # cat /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini   
extension=pdo_mysql.so                                                       

DockerFile PHP

FROM php:7.1-fpm-alpine
RUN apk update \
   && docker-php-ext-install pdo pdo_mysql \
   && chown -R www-data:www-data /var/www/html \
   && sed -ri 's/^www-data:x:82:82:/www-data:x:1000:50:/' /etc/passwd

Docker 容器上的 PHP 模块

PS C:> docker exec -it php sh      
/var/www/html # php -m                                                                 
[PHP Modules]                                                                          
Core                                                                                   
ctype                                                                                  
curl                                                                                   
date                                                                                   
dom                                                                                    
fileinfo                                                                               
filter                                                                                 
ftp                                                                                    
hash                                                                                    
iconv                                                                                  
json                                                                                   
libxml                                                                                 
mbstring                                                                               
mysqlnd                                                                                
openssl                                                                                
pcre                                                                                   
PDO                                                                                    
pdo_mysql                                                                              
pdo_sqlite                                                                             
Phar                                                                                   
posix                                                                                  
readline                                                                               
Reflection                                                                             
session                                                                                
SimpleXML                                                                               
SPL                                                                                    
sqlite3                                                                                
standard                                                                               
tokenizer                                                                              
xml                                                                                    
xmlreader                                                                              
xmlwriter                                                                              
zlib                                                                                                                                                                          
[Zend Modules]                                                                                                                                                                                                                                       

系统信息

  • Windows 10 专业版
  • Docker 版本 17.06.0-ce,构建 02c1d87

【问题讨论】:

  • 尝试移除镜像,确保所有基于该镜像的容器都停止并移除。
  • 我确实尝试过,但仍有问题。如您所见,php 模块被列为已安装。

标签: php mysql docker pdo dockerfile


【解决方案1】:

我在运行 docker build 时确实曾经看到已经安装的消息,但它仍然为我构建了良好的映像。

https://github.com/fire015/docker/blob/master/php-fpm-71/Dockerfile

尝试使用 docker build --no-cache=true 重新构建它

【讨论】:

    【解决方案2】:

    直到我在调用 docker build 时给图像一个标签并将该标签作为 docker-compose.yml 文件中的图像引用之前,上述方法均不适合我。

    例如

    PS C:\Users\Grrarth\dev\docker> docker build --no-cache=true .
    

    失败的地方

    PS C:\Users\Grrarth\dev\docker> docker build --no-cache=true -t MyImageName .
    

    在 docker-compose.yml 文件中结合以下内容(而不是使用标准镜像文件名):

    services:
      app:
        image: MyImageName
        ...
    

    工作是一种享受。

    我知道对于有经验的 docker 用户来说这听起来很明显,但我还没有看到有人为我们新手指出这一点。

    【讨论】:

      猜你喜欢
      • 2018-09-28
      • 2016-09-28
      • 2018-09-15
      • 2019-01-26
      • 2016-03-16
      • 1970-01-01
      • 2021-11-21
      • 2023-03-28
      • 2016-12-04
      相关资源
      最近更新 更多