动手搭建lnmp环境
今天我们来运用之前的知识手动安装下lnmp环境。
根据一个服务一个容器的原则,一共需要3个容器,分别是nginx容器,php容器和mysql容器。
另外,为了让容器之间能够互相通信,我们还需要自己建立一个网络。
创建一个自定义的网络
创建自定义网络的目的是让容器在自定义的网络内可以互相通信,通过容器名或者别名就可以找到对应的容器,而不用去关心对方容器的ip等信息。
(1)先查看下docker的网络,执行docker network ls
(2)创建自己的网络 ,命名为my-test-net
安装nginx
(1)找到nginx标签为1.19.0-alpine的镜像,并执行docker pull:
说明:
alpine版本的系统比我们熟悉的centos体积小,因此一般都用alpine版本。
(2)查看下本地的镜像:
说明:这个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
说明:
-d代表后台运行该容器,
-name设置容器的名字为nginx,
-p将宿主机的8080端口映射给容器的80端口,
-v将宿主机下的/tmp/lnmp/html目录和容器里面的/usr/shar/nginx/html进行绑定,
--network将nginx容器加入到名为my-test-net的网络中去
(4)访问nginx容器是否安装完成
至此,nginx的安装便完成了。
安装php-fpm
(1)找到标签名为7.2-prod-0.106的镜像,并执行docker pull
docker pull devilbox/php-fpm:7.2-prod-0.106
(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
-v设置宿主机的/tmp/lnmp/www目录和容器里面的/www目录绑定
--network
配置nginx和php-fpm
(1)进入nginx容器中,执行docker exec -it 01f /bin/sh
(2)修改/etc/nginx/conf.d/default.conf,共修改两处,见下图:
(3)修改完成后重启nginx容器
(4)在宿主机的/tmp/lnmp/www目录下新建test.php文件,并写上phpinfo()代码,此刻也就意味着容器内的/www目录下也有了test.php文件
(5)访问test.php文件,发现访问成功,此时说明我们的php安装完成。
安装mysql
(1)拉取最新的mysql镜像,docker pull mysql
(2)启动mysql容器,执行命令:
docker run --name my-mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --network my-test-net mysql
--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,效果如下:
看到连接成功,说明我们php连接mysql也成功了。
至此,我们的lnmp环境也就搭建完成了。
尽管上述的操作很简单,但是还是要一个一个的分别配置,先nginx再PHP然后再mysql,还是稍微有点麻烦的。
下一篇,我们将介绍用docker compose更简单快捷的构建lnmp。