现有两个容器:nginx 和 php-fpm,我们通常的连接方式是采用 tcp 形式,配置 127.0.0.1:9000
将 php 相关请求转发给 php-fpm,而使用 socket 的连接方式,将获得更好的性能。
具体配置示例如下:
-
配置 docker-compose.yml
version: '3' services: # Nginx nginx: build: context: ./build/nginx args: VERSION: 1.14 image: lnmp/nginx:1.14 ... volumes: ..... - ./conf/php_fpm/sock:/sock links: - php_fpm # PHP with fpm php_fpm: build: context: ./build/php70_fpm args: - VERSION=7.0 image: lnmp/php_fpm:7.0 ..... volumes: ..... # php-fpm 的配置 - ./conf/php_fpm/zz-docker.conf:/usr/local/etc/php-fpm.d/zz-docker.conf # 挂载宿主机 socket 目录,因为 nginx 服务也需要访问 - ./conf/php_fpm/sock:/sock
-
修改 php-fpm 配置文件
[global] daemonize = no [www] ;listen = 127.0.0.1:9000 listen = /sock/php70-fpm.sock listen.mode = 0666 .....
-
修改对应项目的 nginx 配置文件
server { listen 80; server_name test.local; index index.html index.htm index.php; root /usr/share/nginx/html/testProject; ..... # 处理 php 文件 location ~ \.php { # fastcgi_pass php_fpm:9000; fastcgi_pass unix:/sock/php70-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/testProject/$fastcgi_script_name; include fastcgi_params; } ..... }
以上操作完成后,重新使用 docker-compose up
启动服务。
提示:如果出现 502 或 找不到 xx.sock 文件的错误,请检查确认用户权限或相关设置是否正确。
所有评论(0)