docker的使用(2): 部署PHP


#这里使用nginx配合php-fpm的方式来运行php,nginx部署见上篇


#下载php7.2 fpm

docker pull php:7.2-fpm


A:使用php-fpm容器IP的方式

docker run --name dcPhpfpm -p 9000:9000 \
-v /web/www:/var/www/html \
-d php:7.2-fpm

#查看dcPhpfpm容器的IP

docker inspect dcPhpfpm | grep "IPAddress"

比如结果为 172.17.0.3。在/web/conf/conf.d/default.conf(见上篇)中添加以下内容,以解析php


location ~ \.php$ {
      
       fastcgi_pass   172.17.0.3:9000;
       fastcgi_index  index.php;
       fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
       include        fastcgi_params;
      
    }

fastcgi_param  SCRIPT_FILENAME #对应php-fpm的html目录,不使用$document_root


#重启nginx容器

docker restart dcNginx


#创建一个测试页

vi /web/www/p.php

输入:

<?php
  phpinfo();


#访问:192.168.1.200/p.php,正常即可看到phpinfo页




B:使用php-fpm容器名的方式:

#如果在上篇的dcNginx中做了连接,连到容器 dcPhpfpm 则可把IP改为容器名 fastcgi_pass   dcNginx:9000;


方法是在创建启动的时候加 --link


步骤:

#停止并删掉之前的dcNginx,重建,加一行命令 “--link dcPhpfpm:phpfpm” 让它连接到 dcPhpfpm。停止并删除上篇中创建的nginx容器:

docker stop dcNginx
docker rm dcNginx


加一行--link dcPhpfpm:phpfpm 重新创建dcNginx,使其与dcPhpfpm关联,完整命令如下:

docker run --name dcNginx -p 80:80 \
--link dcPhpfpm:phpfpm \
-v /web/www:/usr/share/nginx/html  \
-v /web/conf/nginx.conf:/usr/share/nginx/nginx.conf \
-v /web/conf/conf.d:/etc/nginx/conf.d  \
-v /web/logs:/var/log/nginx \
-d nginx


此时即可把容器IP 172.17.0.3改为容器名 dcPhpfpm

location ~ \.php$ {
       fastcgi_pass   dcPhpfpm:9000;
       fastcgi_index  index.php;
       fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
       include        fastcgi_params;
      
    }




完整nginx配置文件default.conf

server {
      
    listen       80;
    server_name  localhost;
    ##charset koi8-r;
    ##access_log  /var/log/nginx/host.access.log  main;
      
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
      
      
    location /api{
        proxy_pass http://192.168.1.1:9999/api;
        # access_log "logs/test.log";
    }
      
    location ~ \.php$ {
      
           fastcgi_pass   dcPhpfpm:9000;
           #fastcgi_pass   172.17.0.3:9000;
           fastcgi_index  index.php;
           fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
           include        fastcgi_params;
        }
}


所以最好安装顺序为 mysql(mariadb) > php-fpm > nginx

装完mysql(mariadb),在php-fpm中建一个连接到mysql,nginx再建连接到php-fpm。

   

类别:OperationMaintenance   阅读(0)   评论(0)    发表时间:2018-06-07 20:00  星期四

评论区

发表评论

        姓名:
邮箱|网站:
        内容:

  (可按Ctrl+Enter提交)