阿猫的博客

阿猫的博客

Docker部署PHP应用几个坑点

802
2022-03-15

官方Docker镜像默认没有启用PDO

在部署ThinkPHP框架应用时报错提示could not find driver,但没有显示任何有助于debug的信息(连mysql连接错误的那个数字+错误都没有)。搜索引擎找到PDO没有正确配置时可能会出现该问题(https://blog.csdn.net/weixin_42325823/article/details/106278947),使用phpinfo()查看确实PDO没有开启。进一步搜索后发现需要自行启动(https://stackoverflow.com/questions/37526509/how-to-install-pdo-driver-in-php-docker-image),同时dockerhub上也有相应的说明(https://hub.docker.com/_/php,见How to install more PHP extensions)。在Dockerfile中增加以下两行即可。

RUN docker-php-ext-install pdo pdo_mysql mysqli && docker-php-ext-enable pdo pdo_mysql mysqli
RUN sed -i 's/^;extension=pdo_mysql$/extension=pdo_mysql/' /usr/local/etc/php/php.ini-production && mv /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini

runtime目录需要给予777权限

没啥好说,就

RUN chmod -R 777 runtime