|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "docker搭建lnmp环境并挂载" |
| 4 | +date: 2019-09-08 21:57:00 +0800 |
| 5 | +tags: docker |
| 6 | +description: |
| 7 | +--- |
| 8 | + |
| 9 | + |
| 10 | +上篇文章讲到已经将虚拟机中的目录挂载到本机中,那么,接下来要搭建的环境,只需要将软件安装到虚拟机中的挂载目录,在本机中就可以看到了。 |
| 11 | + |
| 12 | +作为一个PHPer,当然要首先配置php的运行环境。(以php7.0,MySQL5.7,nginx作为环境): |
| 13 | + |
| 14 | +### [](#header-3)一、mysql5.7安装 |
| 15 | +1、下载镜像 |
| 16 | +{% highlight dos %} |
| 17 | +docker pull mysql:5.7 |
| 18 | +{% endhighlight dos %} |
| 19 | + |
| 20 | +2、启动镜像 |
| 21 | +{% highlight dos %} |
| 22 | +docker run --name mysql \ |
| 23 | +-p 3306:3306 \ |
| 24 | +-e MYSQL_ROOT_PASSWORD mysql:5.7 |
| 25 | +{% endhighlight dos %} |
| 26 | + |
| 27 | +3、启动成功后,将mysql容器中的配置文件复制到本机目录中(挂载时只挂载目录,不挂载文件) |
| 28 | +{% highlight dos %} |
| 29 | +docker cp 288e7f3b044d(容器id):/etc/mysql/conf.d /mydocker/lnmp/mysql/conf(本地挂载目录 |
| 30 | +{% endhighlight dos %} |
| 31 | + |
| 32 | +4、删除容器,重启建立容器,并挂载配置目录和数据目录 |
| 33 | +{% highlight dos %} |
| 34 | +docker run --name mysql5.7 \ |
| 35 | +-p 3306:3306 \ |
| 36 | +-v /mydocker/lnmp/mysql/data(虚拟机中挂载目录):/var/lib/mysql \ |
| 37 | +-v /mydocker/lnmp/mysql/conf(虚拟机中挂载目录):/etc/mysql/conf.d \ |
| 38 | +-e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 |
| 39 | +{% endhighlight dos %} |
| 40 | + |
| 41 | +由于在将VirtualBox虚拟机中的目录以共享的形式挂载到本地,所以在启动的时候会报错 |
| 42 | + |
| 43 | +从错误中大概能看到好像是因为mysql默认数据是innodb格式,然后异步IO的配置在虚拟机中不被支持,所以在启动的时候,在最后面增加了一行my.cnf的默认配置将异步IO配置关掉,在命令最后添加 |
| 44 | +{% highlight dos %} |
| 45 | +--innodb-use-native-aio=0 |
| 46 | +{% endhighlight dos %} |
| 47 | +添加之后挂载成功,并且容器启动成功 |
| 48 | + |
| 49 | +### [](#header-3)二、nginx安装 |
| 50 | +1、下载nginx镜像 |
| 51 | +{% highlight dos %} |
| 52 | +docker pull nginx |
| 53 | +{% endhighlight dos %} |
| 54 | + |
| 55 | +2、建立容器,并将配置文件复制到本地得虚拟机挂载目录中 |
| 56 | +{% highlight dos %} |
| 57 | +docker cp e797b38dd76b(容器id):/etc/nginx/conf.d /mydocker/lnmp/nginx/conf/conf.d(本地挂载目录) |
| 58 | +{% endhighlight dos %} |
| 59 | + |
| 60 | +3、删除容器,重新建立容器,并挂载配置文件、项目空间和日志目录 |
| 61 | +{% highlight dos %} |
| 62 | +docker run --name nginx -p 80:80 \ |
| 63 | +-v /mydocker/lnmp/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \ |
| 64 | +-v /mydocker/lnmp/nginx/conf/conf.d:/etc/nginx/conf.d \ |
| 65 | +-v /mydocker/lnmp/nginx/log:/var/log/nginx \ |
| 66 | +-v /mydocker/lnmp/nginx/html:/usr/share/nginx/html nginx:latest |
| 67 | +{% endhighlight dos %} |
| 68 | + |
| 69 | +4、建立成功,可以直接在本地目录中修改配置文件 |
| 70 | + |
| 71 | +### [](#header-3)三、php7.0安装 |
| 72 | +1、下载php镜像 |
| 73 | +{% highlight dos %} |
| 74 | +docker pull php:7.0-fpm |
| 75 | +{% endhighlight dos %} |
| 76 | + |
| 77 | +2、建立容器,并挂载文件,将php的html目录挂载到和nginx的html相同目录下 |
| 78 | +{% highlight dos %} |
| 79 | +docker run --name php7 \ |
| 80 | +-p 9000:9000 \ |
| 81 | +-v /mydocker/lnmp/php:/usr/local/etc/php \ |
| 82 | +-v /mydocker/lnmp/nginx/html:/var/www/html \ |
| 83 | +php:7.0-fpm |
| 84 | +{% endhighlight dos %} |
| 85 | + |
| 86 | +3、查询php容器得分配ip |
| 87 | +{% highlight dos %} |
| 88 | +docker inspect --format='{ {.NetworkSettings.IPAddress} }' php7.0 |
| 89 | +{% endhighlight dos %} |
| 90 | + |
| 91 | +4、将查询到的php容器ip配置到nginx的配置文件中,重启nginx即可访问phpinfo信息 |
| 92 | + |
| 93 | +### [](#header-3)四、docker network配置 |
| 94 | + |
| 95 | +上面的步骤中,获取到php的ip之后,配置到nginx中,有一个缺点,就是php容器的ip是会变化的,所以如果一直这样的话,我们在每次使用之前就要去检查ip是否正确,再进行替换,这样非常不方便。 |
| 96 | + |
| 97 | +好在docker提供了docker network命令,可以将nginx的配置文件中的ip直接换成对应php容器的名称就可以,这样就不会被ip烦恼了 |
| 98 | + |
| 99 | +1、创建network |
| 100 | +{% highlight dos %} |
| 101 | +docker network create lnmp |
| 102 | +{% endhighlight dos %} |
| 103 | + |
| 104 | +2、将php和nginx分别加入到刚才的network中 |
| 105 | +{% highlight dos %} |
| 106 | +docker network connect lnmp php7.0 |
| 107 | +docker network connect lnmp nginx |
| 108 | +{% endhighlight dos %} |
| 109 | + |
| 110 | +3、加入成功后可以查询network下的容器 |
| 111 | +{% highlight dos %} |
| 112 | +docker network inspect lnmp |
| 113 | +{% endhighlight dos %} |
| 114 | + |
| 115 | +4、将nginx中的fastcgi_pass配置中的ip修改为php容器名称,重启nginx即可 |
| 116 | + |
| 117 | + |
| 118 | +以上就是lnmp环境搭建的步骤,成功之后,就可以运用docker来进行本地开发了 |
0 commit comments