之前刚使用docker启动php,但因为只是简单启动,很多配置及挂载也没有搞,因为一搞就出错,真是蛋痛,今天好好地梳理了一下,基本都OK吧。在docker下pull下php之后要注意启动的php容器里有以下几个文件及目录比较重要:
1. /usr/local/etc/php-fpm.conf 这是php的配置文件。
2. /usr/local/etc/php-fpm.d 这里是配置的pool,可以配多个,一般就是www.conf
3. /usr/local/etc/php 这里是php启动加载的扩展文件,比如redis.so配置之类。本文地址:http://www.04007.cn/article/704.html,未经许可,不得转载.
这当然是我现在已经完全明白之后的事,在这之前我只要修改一下最简单的docker启动php容器命令就会报错误PHP Startup: Unable to load dynamic library usr/local/lib/php/extensions/no-debug-non-zts-20160303/geoip.so,详细如下:本文地址:http://www.04007.cn/article/704.html,未经许可,不得转载.
tu@u34:/data01/php$ docker logs -f b321be15a3c4 [09-Nov-2019 08:08:19] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library /usr/local/lib/php/extensions/no-debug-non-zts-20160303/geoip.so - /usr/local/lib/php/extensions/no-debug-non-zts-20160303/geoip.so: cannot open shared object file: No such file or directory in Unknown on line 0 [09-Nov-2019 08:08:19] WARNING: Nothing matches the include pattern /usr/local/etc/php-fpm.d/*.conf from /usr/local/etc/php-fpm.conf at line 125. [09-Nov-2019 08:08:19] ERROR: No pool defined. at least one pool section must be specified in config file [09-Nov-2019 08:08:19] ERROR: failed to post process the configuration [09-Nov-2019 08:08:19] ERROR: FPM initialization failed
我知道这是缺少了geoip.so扩展,但因为没有把相关的目录挂载出来,又没法去修改。现在把目录挂载出来了,只需要去扩展目录/usr/local/etc/php中删除对应的geoip.so就不会把这个错误。不过也可以了解一下geoip为什么报错,这是因为这个扩展依赖系统安装geoip模块,可以在docker中使用pecl安装此模块(会提示对系统有依赖,需要安装)。
除此之外还需要挂载日志目录,使用/var/log/php吧。docker里面都写到/var/log里面了,但这里有很多其它的日志,不如独立一个文件夹。于是完整的docker启动php命令就出来了,建议建一个新目录,里面保持和docker中的/usr/local/etc一一对应,这样不至于花精力去对应两边的目录文件。另外对php.ini的配置都写在php-fpm.conf中的pool文件中,比如www.conf,启动命令及www.conf配置如下:本文地址:http://www.04007.cn/article/704.html,未经许可,不得转载.
#启动命令 tu@u34:/data01/php$ docker run --name php -idt -p 9000:9000 \ -v /opt/www-data/test.kermit.com:/var/www \ -v /data01/php/php-fpm.conf:/usr/local/etc/php-fpm.conf \ -v /data01/php/php-fpm.d:/usr/local/etc/php-fpm.d \ -v /data01/php/php:/usr/local/etc/php \ -v /data01/php/log:/var/log/php \ php镜像名称 #www.conf中添加的配置如下。包括开户慢日志 slowlog = /var/log/php/$pool.log.slow php_admin_value[error_log] = /var/log/php/fpm-php.www.log php_admin_flag[log_errors] = on php_admin_value[memory_limit] = 2048M php_admin_value[post_max_size] = 2048M php_admin_value[upload_max_filesize] = 2048M本文地址:http://www.04007.cn/article/704.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/704.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |