docker搭建php,nginx,mysql环境

好久没有更新博客了,有两三年没有写了。
最近想自己搭个网站,学了两天docker技术,终于不用自己去配各种环境了,docker还是比较方便的,值得研究一把。

怎么安装不讲了,几个命令搞定,网上一大把,pull下来run起来就可以了。

docker的原则,一个容器只起一个服务,开始我还想一个容器把所有的环境跑起来呢,其实这样不好。整个lnmp环境就是多容器协作来完成。
以前我配置服务器很麻烦,系统不一样,环境不一样,开发服务器和测试机不一样,配起来也有差异,很烦人。
现在用docker,有现成的镜像,就拿过来用嘛,没必要全部自己搞一遍。

  1. 装nginx,docker pull nginx,run起来
  2. 装php-fpm,docker pull php:7.0-fpm,run起来
  3. 装mysql,docker pull mysql:5.6,run起来
  4. 装phpmyadmin,docker pull phpmyadmin/phpmyadmin,run起来

这样每一个都能单独run起来了
要协作怎么办,用link参数来解决,怎么link自己搜。

这里只讲重点,php和nginx协作,nginx里面配置的目录参数是要传给php-fpm的,传过去的网站目录php容器要能识别,所以你的宿主机器里面的网站目录www要挂到php和nginx对应的地方,然后nginx里面的目录配置要用php的目录配置,不然php容器不认识,就无法解析你的php代码。不知道说清楚了没有。nginx开启php支持,配置fastcgi_param,关键就是这个东西。网上没一个人能讲明白的。

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

就是这个/var/www/html,这个目录是php容器里面的内容目录,为什么在nginx容器里面这样配置,就是nginx要把这个参数传给php容器,php容器他只认识自己的目录结构,nginx里面的内容目录和php里面的内容目录默认是不一样的,nginx的网站目录默认是/usr/share/nginx/html,不能把这个东西传过去,否则php不认识,会告诉你找不到文件。
只有这一个坑,其他的网上搜一大把。

如果你熟悉了docker,看了我这篇文章解了这个坑,配一个一模一样的lnmp环境不需要5分钟,超过5分钟你来打我的脸。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值