我总是收到PDO driver not found
的错误。我尝试重新启动,直接安装PDO扩展。请注意,这个docker设置昨晚在我的Linux机器上运行。唯一的区别是我从头开始做了比在我的Windows盒子上我已经有了图像。
最初收到错误后我试图删除图像,基础PHP图像由于某种原因无法删除。然后我跑了:
docker exec -it php sh
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]
SYSINFO
答案 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 用户来说这听起来很明显,但我还没有看到有人为我们新手指出这一点。