美文网首页程序猿的进阶屋docker
使用Docker快速搭建Nginx+PHP-FPM环境

使用Docker快速搭建Nginx+PHP-FPM环境

作者: 王宝花 | 来源:发表于2017-02-12 19:59 被阅读9734次

    背景

    在上一周笔者对docker了解,仅限于这样认知:它能替代虚拟机,并且比虚拟机更省资源。

    在老师和同事的感染下,感觉不学习docker好像就不能在IT圈混一样,于是,开始涌入Docker的大潮中。但万事开头难,听了同事的推荐,看了宁皓网的基础的视频之后感觉仅是对基本的命令进行了了解。但是真拿出来用还是不够用的,于是开始搜罗更重资料,学习搭建LNMP环境。
    终于功夫不负有心人,在今天终于是实验成功了,特此写下这篇笔记,为后来人提供一个示例。

    实战

    1. 下载nginx官方镜像和php-fpm镜像
    docker pull nginx
    docker pull bitnami/php-fpm
    
    图片.png

    笔者未进行更改docker源,依然是官方源。
    当然,你可以使用中国源。

    1. 使用php-fpm镜像开启php-fpm应用容器
    docker run -d --name myFpm -p  -v /var/www/html:/usr/share/nginx/html bitnami/php-fpm
    

    -d : 该参数为后台运行之意
    -v : 指定宿主机与容器的映射关系。/var/www/html为宿主机的项目目录(自定义的),/usr/share/nginx/html为nginx服务器项目默认的路径。

    1. 使用nginx镜像开启nginx应用容器
    docker run -d --name myNginx -p 8080:80 -v /var/www/html:/usr/share/nginx/html nginx
    

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

    1. 查看对应的IP信息
      • 首先查看是否启动成功
    docker ps -a
    
    图片.png

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

    docker inspect myFpm | grep "IPAddress"
    
    图片.png
    1. 修改nginx的相关配置
      在容器中是没有vim命令的,所以不能在容器中直接修改配置文件。所以我们必须通过变通的方式去解决这个问题,否则只能在每个容器中安装vim。
    • 首先登录到对应的容器中,查看配置信息路径,这在之后修改时会用到。
    docker exec -it myNginx /bin/bash
    
    图片.png

    -i : --interactive,交互模式。
    -t : --tty,开启一个伪终端。
    /bin/bash : 必须写,否则会报错。这是开始伪终端时,进入bash界面,也就是命令行界面。

    • 查看对应的配置文件位置
    /etc/nginx/conf.d/default.conf
    
    图片.png
    • 退出命令行,不要使用exit,因为exit会让容器停止。这里使用ctrl + p + q来退出容器。

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

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

    这里用到了上一步查询到的配置文件路径信息

    • 在宿主机修改配置文件的php部分,内容如下:
    location ~ \.php$ {
            fastcgi_pass   172.17.0.2:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
            fastcgi_param  SCRIPT_NAME      $fastcgi_script_name;
            include        fastcgi_params;
        }
    
    • 再次使用复制命令将其复制到容器中,然后再次进入容器中,将nginx配置文件重新载入
    docker cp ./default.conf myNginx:/etc/nginx/conf.d/default.conf
    
    • 进入到nginx容器中重新载入配置文件
    docker exec -it myNginx /bin/bash
    service nginx reload
    

    成功了

    我看了一下,用到的模块还都有。

    图片.png 图片.png 图片.png

    相关文章

      网友评论

      • 332166d2f062:一点开php 就下载...
      • yeszao:讲解得很清楚呀,同时还可以看看一键部署lnmp环境教程:https://www.awaimai.com/2120.html
      • 胡乱唱歌ing:我可以向你请教两个问题吗?
        1.我pull 了php-fpm 镜像并安装了,可以我找不到php.ini,请问这个文件在哪呢?
        2.如果需要安装php扩展该怎么操作呢?
      • 迪拜de天空:刚入Docker的坑,感觉PHP官方一个给万能的环境
        王宝花:@迪拜de天空 laradock 可以试一下。
      • 阿丑酱:查看状态应该是 ststs !!!!
      • 98bcf3033250:厉害 厉害 谢谢 楼主

        总结一下别人和自己遇到的问题

        创建php-fpm容器的时候有错误, -p 去掉或写上端口映射

        配置文件复制到容器中应该是这样吧:
        docker cp ./default.conf myNginx:/etc/nginx/conf.d/default.conf

        注意一下配置的ip 其它的就没什么坑了 很流畅
      • 飞鸟老哥:可以的
      • 小小小胡:刚入Docker的坑。。
      • 2b906db3d3c5:还是很有些错误啊。不过已经很不错啦
      • libmi:配置文件复制到容器中应该是这样吧:
        docker cp ./default.conf myNginx:/etc/nginx/conf.d/default.conf
      • 娲城小将:非常感谢楼主,弄了好久终于还是看着你的弄好的。
      • ihibin:fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        这两行保存后无法正常访问localhost:8080/info.php
        替换为下面的一行代码测试成功
        fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
        王宝花:@路小飞 推荐使用 laradock,使用docker-compose一键搭建docker版的PHP开发环境。
        路小飞:@王宝花 我的用你的配置沒毛病
        王宝花:3q。不过在开发场景下都会使用docker-compose。github上有一个开源的环境,laradock,推荐使用。
      • 曹轩跃:创建php-fpm容器的时候有错误, -p 去掉或写上端口映射

      本文标题:使用Docker快速搭建Nginx+PHP-FPM环境

      本文链接:https://www.haomeiwen.com/subject/tiwaittx.html