因为换工作,这周休息在家。想利用空余时间,把discuz论坛迁移到docker中。其中遇到一个问题:php-fpm私活不能访问数据库。而且没有日志,页面仅报:网页无法成功运行。网上查了好多资料,有说:php-fpm 使用www-data用户运行,权限不够;有说: 容器之间网络问题。由于没有日志文件,所有很难确定原因。经过3-4天的研究,今天突然看到一个帖子,提示:docker官方的php镜像好多扩展模块没有打进去。我想会不会是mysql模块没有打进到php镜像中呢?带着疑问,搜索了另一个镜像:devilbox/php-fpm;此镜像把一些常用的动态扩展模块,如:mysql,redis 都进行了打包。废话少说:上码:
1.下载镜像
docker pull devilbox/php-fpm:5.6-prod
2.创建容器:
测试1(使用mysqllink)
docker run -d --name php -p 9000:9000 \
-e "DOCKER_LOGS=1" \
-v $PWD/www1:/var/www/default/htdocs \
-v $PWD/logs:/var/log/php \
--link mysql_3306:db devilbox/php-fpm:5.6-prod
3.测试页面:testdb.php
<?php
$link = mysql_connect("db","craftman","123456");
if(!$link) echo "FAILD!连接错误,用户名密码不对";
else echo "OK!可以连接";
?>
php-fpm 和 nginx 的容器通信,不在此文章讨论范围,请自行百度;
4.经过访问:http://bbs.i5i5.top/testdb.php (需要访问自己的php页面)
结果访问成功,最终问题解决。
问题原因:官方php 镜像没有包含mysql扩展包!