动手搭建lnmp环境

今天我们来运用之前的知识手动安装下lnmp环境。

根据一个服务一个容器的原则,一共需要3个容器,分别是nginx容器,php容器和mysql容器。

另外,为了让容器之间能够互相通信,我们还需要自己建立一个网络。


创建一个自定义的网络

创建自定义网络的目的是让容器在自定义的网络内可以互相通信,通过容器名或者别名就可以找到对应的容器,而不用去关心对方容器的ip等信息。

(1)先查看下docker的网络,执行docker network ls


dockers容器Restarting docker 容器重启命令_dockers容器Restarting


(2)创建自己的网络 ,命名为my-test-net


dockers容器Restarting docker 容器重启命令_php_02



安装nginx

(1)找到nginx标签为1.19.0-alpine的镜像,并执行docker pull:


dockers容器Restarting docker 容器重启命令_dockers容器Restarting_03


说明:

alpine版本的系统比我们熟悉的centos体积小,因此一般都用alpine版本。

(2)查看下本地的镜像:


dockers容器Restarting docker 容器重启命令_dockers容器Restarting_04


说明:这个nginx镜像一共21.3m,体积够小。

(3)运行这个nginx容器

命令如下:


docker run -itd -p 8080:80 --name nginx --network my-test-net -v /tmp/lnmp/html:/usr/shar/nginx/html nginx:1.19.0-alpine


dockers容器Restarting docker 容器重启命令_php_05


说明:

-d代表后台运行该容器,

-name设置容器的名字为nginx,

-p将宿主机的8080端口映射给容器的80端口,

-v将宿主机下的/tmp/lnmp/html目录和容器里面的/usr/shar/nginx/html进行绑定,

--network将nginx容器加入到名为my-test-net的网络中去

(4)访问nginx容器是否安装完成


dockers容器Restarting docker 容器重启命令_mysql_06


至此,nginx的安装便完成了。


安装php-fpm

(1)找到标签名为7.2-prod-0.106的镜像,并执行docker pull


docker pull devilbox/php-fpm:7.2-prod-0.106


dockers容器Restarting docker 容器重启命令_nginx_07


(2)运行php-fpm容器


docker run -d  --name my-php --network my-test-net -v /tmp/lnmp/www:/www devilbox/php-fpm:7.2-prod-0.106


dockers容器Restarting docker 容器重启命令_nginx_08


-v设置宿主机的/tmp/lnmp/www目录和容器里面的/www目录绑定

--network


配置nginx和php-fpm

(1)进入nginx容器中,执行docker exec -it 01f /bin/sh


dockers容器Restarting docker 容器重启命令_nginx_09


(2)修改/etc/nginx/conf.d/default.conf,共修改两处,见下图:


dockers容器Restarting docker 容器重启命令_dockers容器Restarting_10


(3)修改完成后重启nginx容器


dockers容器Restarting docker 容器重启命令_mysql容器 重启_11


(4)在宿主机的/tmp/lnmp/www目录下新建test.php文件,并写上phpinfo()代码,此刻也就意味着容器内的/www目录下也有了test.php文件

(5)访问test.php文件,发现访问成功,此时说明我们的php安装完成。


dockers容器Restarting docker 容器重启命令_mysql_12



安装mysql

(1)拉取最新的mysql镜像,docker pull mysql


dockers容器Restarting docker 容器重启命令_mysql_13


(2)启动mysql容器,执行命令:


docker run --name my-mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456  --network my-test-net mysql


dockers容器Restarting docker 容器重启命令_mysql容器 重启_14


--name为容器的名字为my-mysql

-p为将宿主机的3306端口绑定到容器的3306端口

-e MYSQL_ROOT_PASSWORD=123456为设置密码为123456

--network

(3)在宿主机的/tmp/lnmp/www目录下新建mysql.php文件,并写上如下的代码


<?php
//这里的重点就是这个host是容器my-mysql,因为my-php和my-mysql在一个网络下,所以可以直接用容器的名字去访问这个容器


$con = new mysqli("my-mysql","root","123456");
if (!$con)  { 
    die('Could not connect: ' . mysql_error()); 
}


echo "连接成功";
?>


(4)访问mysql.php,效果如下:


dockers容器Restarting docker 容器重启命令_php_15


看到连接成功,说明我们php连接mysql也成功了。

至此,我们的lnmp环境也就搭建完成了。

尽管上述的操作很简单,但是还是要一个一个的分别配置,先nginx再PHP然后再mysql,还是稍微有点麻烦的。

下一篇,我们将介绍用docker compose更简单快捷的构建lnmp。