現有兩個容器:nginx 和 php-fpm,咱們一般的鏈接方式是採用 tcp 形式,配置 127.0.0.1:9000
將 php 相關請求轉發給 php-fpm,而使用 socket 的鏈接方式,將得到更好的性能。php
具體配置示例以下:html
配置 docker-compose.ymlnginx
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 配置文件docker
[global] daemonize = no [www] ;listen = 127.0.0.1:9000 listen = /sock/php70-fpm.sock listen.mode = 0666 .....
修改對應項目的 nginx 配置文件php7
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
啓動服務。socket
提示:若是出現 502 或 找不到 xx.sock 文件的錯誤,請檢查確認用戶權限或相關設置是否正確。tcp