未安装Docker PDO驱动程序的PHP 7.1 - 已验证它在图像上

时间:2017-07-19 15:30:55

标签: php mysql docker pdo dockerfile

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

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

  1. docker exec -it php sh
  2. docker-php-ext-install pdo pdo_mysql
  3. 运行该命令说明扩展已经安装。但我仍然收到错误。

    我也注意到这与模块一起出现:

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

    SYSINFO

    • Windows 10 Pro
    • Docker版本17.06.0-ce,build 02c1d87

2 个答案:

答案 0 :(得分:1)

当我运行docker build时,我确实看到已安装的消息,但它仍然可以为我构建图像。

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

尝试使用docker build --no-cache=true

从新鲜构建它

答案 1 :(得分:0)

直到我在调用 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 用户来说这听起来很明显,但我还没有看到有人为我们新手指出这一点。