docker快速搭建nginx-php-fpm命令式操作流程

原文地址:http://www.jianshu.com/p/3384e342502b

声明:以下操作是基于作者王宝花同学的操作流程实现的,修复了几处代码。再次感谢作者王宝花。阅读原文请查看原文地址:http://www.jianshu.com/p/3384e342502b

1、pull镜像

docker pull nginx

docker pull bitnami/php-fpm

2、使用php-fpm镜像开启php-fpm应用容器

sudo docker run -d --name myFpm  -v /var/www/html:/usr/share/nginx/html bitnami/php-fpm

-d : 该参数为后台运行之意

-v : 指定宿主机与容器的映射关系。/var/www/html为宿主机的项目目录(自定义的),/usr/share/nginx/html为nginx服务器项目默认的路径。

3、使用nginx镜像开启nginx应用容器

sudo docker run -d --name myNginx -p 8080:80 -v /var/www/html:/usr/share/nginx/html nginx

-p : 该参数设置端口对应的关系。所有访问宿主机8080端口的URL会转发到nginx容器的80端口。

首先查看是否启动成功

sudo docker ps -a

可以看到,上述在STATUS一栏中显示UP,其含义为正在运行。

4、查看IP信息

sudo docker inspect myFpm | grep "IPAddress"

sudo docker inspect myFpm | grep"IPAddress"

"SecondaryIPAddresses": null,

"IPAddress":"172.17.0.2",

"IPAddress":"172.17.0.2",

5、修改nginx的相关配置

在容器中是没有vim命令的,所以不能在容器中直接修改配置文件。所以我们必须通过变通的方式去解决这个问题,否则只能在每个容器中安装vim。

首先登录到对应的容器中,查看配置信息路径,这在之后修改时会用到。

sudo docker exec -it myNginx /bin/bash

-i : --interactive,交互模式。

-t : --tty,开启一个伪终端。

/bin/bash : 必须写,否则会报错。这是开始伪终端时,进入bash界面,也就是命令行界面。

退出命令行,不要使用exit,因为exit会让容器停止。这里使用ctrl + p + q来退出容器。

使用专用的复制命令将配置文件复制到宿主机,然后在宿主机进行编辑(这就是变通的方法)

退出

退出容器,在宿主机操作。

sudo docker cp myNginx:/etc/nginx/conf.d/default.conf ./default.conf

在宿主机修改配置文件的php部分,内容如下:

location ~ \.php$ {

fastcgi_pass172.17.0.2:9000;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

include        fastcgi_params;

}

再次使用复制命令将其复制到容器中,然后再次进入容器中,将nginx配置文件重新载入

sudo docker cp ./default.conf myNginx:/etc/nginx/conf.d/default.conf

进入到nginx容器中重新载入配置文件

sudo docker exec -it myNginx /bin/bash

service nginx reload

default.conf

server {

listen80;

server_name  localhost;

root/usr/share/nginx/html;

index index.php index.html index.htm;

#charset koi8-r;

#access_log  /var/log/nginx/host.access.log  main;

location/{#此处的规则是面向laravel框架的

try_files $uri $uri/ /index.php?$query_string;

}

#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html

#

error_page500 502 503 504/50x.html;

location =/50x.html {

root/usr/share/nginx/html;

}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80

#

#location ~ \.php$ {

#    proxy_pass  http://127.0.0.1;

#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

location ~ \.php$ {

#    root          html;

fastcgi_pass172.17.0.2:9000;

fastcgi_index  index.php;

#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

#      fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

#      fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;

#      fastcgi_param  SCRIPT_NAME      $fastcgi_script_name;

fastcgi_param SCRIPT_FILENAME/usr/share/nginx/html$fastcgi_script_name;

include        fastcgi_params;

}

# deny access to .htaccess files, if Apache's document root

# concurs with nginx's one

#

#location ~ /\.ht {

#    deny  all;

#}

}

原文地址:http://www.jianshu.com/p/3384e342502b

你可能感兴趣的:(docker快速搭建nginx-php-fpm命令式操作流程)