docker上搭建LNMP环境

上一篇介绍在一个nginx容器上,如何管理docker容器
继续扩展,搭建一整套的环境,如LNMP环境( nginx + mysql + php)。
网上有介绍是通过容器连接的方式来实现,也就是一个nginx容器,一个mysql容器,一个php容器,然后通过配置来连接起来。形成一整套开发环境。
但对于一个开发环境来说,我并不建议这样子来做,因为开发环境本来就是要一个独立的环境,增加复杂性不说,独立性还不能保证。
我建议的方式是在一个容器里直接搭好所有的环境,然后启动容器的时候,一整套环境就启动起来。
上一篇已经有一个nginx容器上,可以登录到nginx容器中,在上面继续把mysql和php都装了。
但我选择重新下载一个干净有debian容器
使用命令

命令把镜像下载到本地

多了一个debian镜像(当然也可以选择其它的如ubuntu,centos之类的系统,看个人喜好)

用debian新建一个容器并启动起来

 

绑定了80端口和3306端口,3306是方便以后要访问mysql用

登录容器并执行bash

先装些必要的工作,比如

于是开始你的安装环境之旅吧

具体的安装过程网络上有很多,比如这里
How To Install Linux, Nginx, MySQL, PHP (LEMP Stack) on Debian 8

这样lnmp环境就安装好了。但当你再次启动debina容器的时候,这些服务是不会自己起来的,还是要你再登录进容器来手动启动这些服务。

一个解决方法是在根目录下新建个脚本 startup.sh,

填入以下内容

这个脚本的内容是启动mysql,nginx和php服务
保存妈出

给脚本执行权限

 

退出并关闭容器,

 

然后试下再启动

然后执行容器里的 startup.sh脚本来启动服务

服务都启动成功了,环境搭建完成。
下一篇想介绍一下如何保存并导入自定义好的镜像。

nginx反向代理skynet

nginx作为一个web服务器和反向代理服务器,能够使web服务器和逻辑单独分离,也可以作为负载均衡服务器。基于这些优点,可以使用nginx反向代理skynet,即skynet监听本地的一个socket端口,收到请求后处理逻辑,然后返回结果。nginx和skynet可以同一台机器上,也可以在不同的机器上。

新建一个skynet服务并启动起来,当收到请求后简单返回一条信息

启动起来后log如下,监听8008端口

nginx配置

将所有以server为uri的请求全部转向skynet的8008端口上。

重新加载nginx,用浏览器打开http://localhost:8020/server会收到一条信息显示在浏览器上。

skynet已经自带了一个simpleweb例子,可以直接使用,还有一些解析header的代码,自己可以修改体验下skynet作为web服务器使用。