第一篇 Docker搭建Nginx+MySql+PHP环境

自从认识到Docker这个工具,很多服务都希望通过Docker来搭建,毕竟不会把我的服务器环境弄得乱七八糟的,所以nginx的部署自然也琢磨着怎么用Docker来搭建。(在此声明,本人的docker和nginx的技术水平,就是简单的入门,只会根据实际需要去进一步了解。)

1 Docker的安装

1.1 docker安装

Docker的安装网上有很多教程,我常用的操作系统是CentOs7.x,推荐参考这个教程。

1.2 docker-compose安装

有些教程推荐安装docker-compose,好像是更易于打包docker镜像,可直接参考这个教程,非常简单,执行下面几条命令即可:

$ curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

实际安装的时候,直接下载最新版即可,也就是上面命令中的版本号。

2 php环境的部署

php环境的部署,也是通过docker部署,因为本系列大部分是部署php模板网站,所以需要用到这个环境。

很简单,请直接按照下面的命令运行就是了(PS:对于php版本,可根据自己的需求指定不同版本)

$  docker pull bitnami/php-fpm:7.0   --这个7.0就是指php版本
$  docker run -d -p 9000:9000 \                     ##-d指定后台运行,-p指定系统9000端口映射到nginx容器默认的9000端口
>  -v /data/nginx/www:/usr/share/nginx/html \       ##将我们自建的网站文件夹路径,替换成nginx默认的路径
>  --name m_phpfpm bitnami/php-fpm:7.0              ##起一个别名m_phpfpm,这个别名我们后面会用得到

3 Nginx的部署

3.1 拉镜像和运行

我直接拉取最新的镜像,如果有特殊版本需求的话,请自行指定。执行下面的命令就行了:

$  docker pull nginx
$  docker run -d -p 80:80 --name m_nginx nginx
## --- -d:表示后台运行
## --- -p:指定端口号,nginx默认是80,前一个80是指把当前系统的80端口映射到nginx容器的80端口上,你也可以根据需求选择其他端口
## --- -name:起一个别名
## 最后一个nginx就是镜像的名称,如果你系统中不止一个nginx镜像的话,要指定具体哪一个nginx

3.2 创建资源文件夹

因为一般不会直接用容器内部的文件夹来存放东西,并且有时候Nginx的配置文件也希望能灵活修改,所以我们会在系统内新建一些文件夹,用来挂载到不同的容器,结合我们将会用到的Nginx的文件,我设计了下面的文件夹:

~  #系统根目录
--/data       ##自建文件夹
----/nginx    ##nginx相关的文件夹
------/www    ##网站文件夹,对应nginx的/usr/share/nginx/html文件夹
------/logs   ##nginx日志文件夹,对应nginx的/var/log/nginx文件夹
------/conf.d ##自定义配置文件夹,对应nginx的/etc/nginx/conf.d
------/conf   ##配置文件夹,对应nginx的/etc/nginx/conf

3.3 从Nginx容器拷贝文件

我们主要是拷贝nginx.conf和default.conf两个文件,分别存储到我们能前面建立的文件夹里,命令如下:

$  docker cp ID:/etc/nginx/nginx.conf /data/nginx/conf
$  docker cp ID:/etc/nginx/conf.d/default.conf /data/nginx/conf.d
## ID就是通过docker ps命令查看得到的

3.4 停止并删除容器

文件拷贝后,接下来我们会以挂载的方式重新运行nginx,所以需要把已经运行起来的容器进行删除,执行下面的命令:

$  docker stop ID   ##必须先停止容器,才能删除
$  docker rm   ID
##--注:如果想要删除镜像,执行过上面两步后,再执行“docker rmi nginx”,nginx是镜像名称,可以通过docker images查看得到

3.5 挂载运行Nginx

挂载运行Nginx就是为了把我们自定义的配置文件、网站文件、日志文件,替换Nginx本身对应的文件,便于我们做各种处理。执行下列命令即可:

$ docker run \
> -d \
> -p 80:80 \
> -v /data/nginx/www:/usr/share/nginx/html \
> -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
> -v /data/nginx/conf.d:/etc/nginx/conf.d \
> -v /data/nginx/logs:/var/log/nginx \
> --link m_phpfpm:phpfpm \          ##link是指与另一个容器建立联系,这样的话,上面的配置文件里,才可以用m_phpfpm
> --name m_nginx nginx

4 Mysql的部署

Mysql基本上是所有PHP模板网站所使用的数据库了,所以必须要安装,而且依据我的经验,建议安装5.6版本,也是目前能找到的docker镜像的最低版本,安装建议看这个教程。
Mysql镜像的运行建议按照下面的命令执行(当然最好参考Mysql在docker hub上的官方说明,有时候一些文件位置可能会不同版本不一样)

$ docker run -p 3306:3306 --name mymysql \
> -v $PWD/conf/my.cnf:/etc/mysql/my.cnf \  ###默认配置文件,可选
> -v $PWD/conf/custom:/etc/mysql/conf.d \ ###自定义配置文件所在的文件夹
> -v $PWD/logs:/logs 
> -v $PWD/data:/var/lib/mysql \
> -e MYSQL_ROOT_PASSWORD=123456 \
> --security-opt seccomp:unconfined \
> -d mysql:5.6

到这里nginx、MySql、php环境都已经部署了,后续搭建php模板网站就在此基础上进行,每次部署php网站可能都需要重启nginx,如果有条件建议直接购买云服务商的数据库服务,数据丢了真的很疼,本来钱就少买不了那么多服务器做数据备份。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345