用docker搭建php开发环境
用docker搭建php开发环境(2)
用docker搭建php开发环境(3)
其中坑很多。
我碰到的其中一个是数据库不能正常启动。
命令
docker logs files_mysql-db_1
查看容器日志,日志有
mysqld: [Warning] World-writable config file '/etc/mysql/conf.d/mysql-file.cnf' is ignored.
百度得知,需要
sudo chmod 644 ./mysql/conf.d/mysql-file.cnf
上面这个问题是win10下发生的。
================================================
php使用composer
首先,通过dockerfile 来搞定composer安装的事情。
自行下载composer。phar文件。
COPY ./pkg/composer.phar /usr/local/bin/composer RUN chmod a+x /usr/local/bin/composer \ && /usr/local/bin/composer config -g repo.packagist composer https://packagist.phpcomposer.com
在app文件夹下放置composer.json文件。
{ "require": { "zendframework/zendframework1":"1.12.20" } }
然后,在虚拟机里使用命令
/docker_study/zphal/bin/docker-compose run --rm -w /data/www php-fpm composer update
注意,上面都是把composer.json文件直接放在app下面,实际应放在上层目录更好,
现在,我要测试,php和mysql能正确访问,php与redis能正确连接。
首先,自己写个phpinfo的php文件简单测试一下。
如果成功的话,如上,先设置一个zend1的composer的json文件,然后自己更新。
然后,写一个test.php放在根目录下测试。
<?php require_once __DIR__ .'/vendor/autoload.php'; header("Content-type: text/html; charset=utf-8"); $db = Sys::getdb(); $sql="SHOW GLOBAL VARIABLES like '%server%'"; $result = $db->fetchAll($sql); var_dump($result); echo "<br>以上关于server的信息显示了,表示数据库连接成功<br><br>"; $redis = Sys::getredis(); $redis->set('aa',123); echo $redis->get('aa'); echo "<br>上面一行显示123,表示redis连接正确。"; class Sys { public static $db; /** * 数据库连接 * * @return \Zend_Db_Adapter_Abstract */ public static function getdb() { $params = array( 'host' => 'files_mysql-db_1', 'username' => 'root', 'password' => '123456', 'dbname' => 'zphaldb', 'charset' => 'UTF8', 'port' => '3306', 'driver_options'=> [ \PDO::ATTR_STRINGIFY_FETCHES => false, \PDO::ATTR_EMULATE_PREPARES => false, ], ); if (self::$db == null) { self::$db = \Zend_Db::factory('pdo_mysql', $params ); } return self::$db; } /** * 得到redis * @return \Redis */ public static function getredis() { static $redis = null; if ($redis == null) { $redis = new \Redis(); $redis->connect('files_redis-db_1','6379'); } return $redis; } }
然后打开宿主机浏览器,测试http://127.0.0.1/test.php
看结果如何。