使用Docker进行小型PHP网站LNMP的快速搭建教程

本想在这篇文中说一下阿里云主机的采购和选型,又怕大家误会我是广告贴,所以关于阿里云的选购以后我将单独发到我的博客当中。

闲话少说,进入正题。小型企业站快速上云其实是一件很容易的事情,但是每次配置服务器却并不是一件容易的事,每次大家都要找一些需要安装的插件和组件,有的因为版本问题安装过程相当麻烦。Docker就成为了我们快速部署的工具。

使用Docker进行小型PHP网站LNMP的快速搭建教程_第1张图片

docker

本文中我将以php7+nginx+mysql+为例在centos6.8以上系统中进行docker环境的搭建,也就是常说的LNMP环境,接下来为大家简单进行网站配置的教程.

开始前我们明确一下所要安装服务的插件及开放的端口

Php7-fpm进程默认开放9000端口,Nginx默认开放80端口,也可以根据需要进行调整,Mysql开放3306端口。

本文中我们采用官方镜像进行docker源的加速。

拉取镜像

PHP

docker pull php:7.2.3

MySQL

docker pull mysql:5.7.21

Nginx(Tengine/openresty)

docker pull nginx:1.13.10

启动容器

启动容器时,需要注意各容器之间的关联关系。

在LNMP架构中,WEB服务器(Nginx)需要将PHP请求转发给php-fpm进行处理,而PHP要进行数据的存取,少不了和数据库(MySQL)进行交互,所以他们之间存在关联,那么启动时需要指定这些关联,这个关联使用networks参数来指定。

建立网络

docker network create my_net

docker run -it -d -p 3306:3306 --network my_net -e MYSQL_ROOT_PASSWORD=123456 -v /mnt/mysql:/var/lib/mysql --name mysql mysql:5.7.21 
docker run -d -p 9000:9000 --name php -v --network my_net /mnt/html:/usr/local/openresty/nginx/html php:7.2.3 #PHP
docker run -d -p 80:80 --name nginx -v /mnt/html:/usr/local/openresty/nginx/html --network my_net nginx:1.13.10 #Nginx

启动时我们多使用了一个-v参数,这个参数的意思是挂载,作用是将宿主机的一个目录挂载到容器中指定的目录,这样,即使我们销毁了这个容器,那容器中的数据依然保留在宿主机上,不会丢失。比如数据库存放数据的data目录,WEB服务器存放代码的www目录,每个服务存放配置文件的目录等。

web_server:
 image: nginx
 ports:
 - "80:80"
 - "443:443"
 volumes:
 - /mnt/html:/usr/local/openresty/nginx/html
 networks:
 - "my_net"
db_server:
 image: docker.io/mysql:5.7.21
 environment:
 MYSQL_ROOT_PASSWORD: 123456
 ports:
 - "3306:3306"
 volumes:
 - /mnt/mysql:/var/lib/mysql
 networks:
 - "my_net"
php:
 image: docker.io/php:7.2.3
 container_name: php
 links:
 - db_server:mysql
 ports:
 - "9000:9000"
 volumes:
 - /mnt/html:/usr/local/openresty/nginx/html
 - /mnt/php:/usr/local/etc/php
 networks:
 - "my_net"
 networks:
 my_net:
 driver: bridge
 

保存为docker-compose.yml,并在该文件处执行启动命令docker-compose up -d

Starting mysql ... done
Starting php ... done
Starting nginx ... done

可以验证一下是否正常启动:

docker ps -a 或 docker-compose ps

手打不易,如果觉得有用请关注我!欢迎转发收藏

你可能感兴趣的:(PHP,docker,docker,lnmy)