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

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

使用Docker进行小型PHP网站LNMP的快速搭建教程
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
手打不易,如果觉得有用请关注我!欢迎转发收藏


明哥看世界
0 声望0 粉丝