您的位置:首页 > 运维架构 > Docker

Docker下的OpenResty三部曲之一:极速体验

2018-02-08 17:46 1626 查看
开涛大神的《跟我学Nginx+Lua开发》是学习OpenResty的经典教程,学习的时候,一开始搭建环境花了一些时间,于是我制作了Docker镜像,在Docker下就可以快速的进入实战了;

原文地址:http://blog.csdn.net/boling_cavalry/article/details/79290944

章节介绍

从本章开始,我们在Docker实战Nginx+Lua开发,整个实战分为以下三章:

1. 极速体验Nginx+Lua构建的web服务;

2. 详细讲解Docker镜像的制作过程,其实也就是搭建Nginx+Lua开发和运行环境的过程;

3. 在kubernetes环境搭建Nginx+Lua+Tomcat的综合服务;

实战的web服务介绍

本章的Nginx+Lua搭建的web服务提供两个http接口:

lua_request:展示OpenResty的基本api,可以将http请求的header、url参数等信息输出到响应页面;

lua_sequare:展示Lua的module功能,提供一个库,根据请求参数中的长和宽计算长方形面积;

实战环境

操作系统:Ubuntu16;

Docker版本:17.03.2-ce;

接下来开始实战吧;

启动容器

执行以下命令即可下载镜像并启动一个容器:

docker run --name t01 -p 9000:80 -idt bolingcavalry/ubuntu16-openresty:0.0.1


控制台提示以下信息:

root@lua:~# docker run --name t01 -p 9000:80 -idt bolingcavalry/ubuntu16-openresty:0.0.1
Unable to find image 'bolingcavalry/ubuntu16-openresty:0.0.1' locally
0.0.1: Pulling from bolingcavalry/ubuntu16-openresty
f2233041f557: Already exists
f321bcc6a76c: Already exists
2f25d8d1d058: Already exists
87bfe0d2f0e8: Already exists
145c1bf7947a: Already exists
546d58c7d480: Already exists
cadf8b8d5d06: Already exists
e0ed1c48b1cc: Already exists
b8085a241205: Already exists
820b940d52f1: Already exists
ff0d54663b26: Already exists
eba48d8ccc7c: Already exists
f0a6dce69172: Already exists
8496f0f12407: Already exists
f3b25cfef0d3: Already exists
bd28ce63479a: Already exists
777ff5ac7023: Already exists
8a41d9c5000c: Already exists
801a5a4ac33a: Already exists
ed6ca8212ccb: Pull complete
d882b09d1077: Pull complete
c1c342d371a3: Pull complete
35679e2a3339: Pull complete
772518a2f071: Pull complete
31a13eb8d7f2: Pull complete
Digest: sha256:3b8c180a222ac94d1b1b6ef017a96ab1e8359bf171fe6e6e05ffc487f323f134
Status: Downloaded newer image for bolingcavalry/ubuntu16-openresty:0.0.1
d132f8c553ad725ea0406b7ce295834c06bc55ff34984c13527d2c897a57235d


OK,用于体验Nginx+Lua的容器已经启动成功了,接下来我们验证一下服务吧;

用浏览器验证web服务

我的机器IP地址是192.168.119.150,所以在浏览器输入以下地址:

http://192.168.119.150:9000/lua_request/111/222,浏览器展示如下信息,大部分都是lua脚本中OpenResty的API提供的数据:



http://192.168.119.150:9000/lua_sequare/10/30,浏览器展示如下信息:



可见web服务的接口已经正常工作了,接下来我们去容器中看看真实的lua脚本;

浏览lua脚本

执行以下命令进入容器:

docker exec -it t01 /bin/bash


执行cat /usr/local/work/boling_cavalry.conf,将nginx的配置信息打印出来,如下:

root@d132f8c553ad:~# cat /usr/local/work/boling_cavalry.conf
server {
listen       80;
server_name  _;

location ~ /lua_request/(\d+)/(\d+) {
#设置nginx变量
set $a $1;
set $b $host;
default_type "text/html";
#nginx内容处理
content_by_lua_file /usr/local/work/lua/test_request.lua;
#内容体处理完成后调用
echo_after_body "ngx.var.b $b";
}

location ~ /lua_sequare/(\d+)/(\d+) {
set $a $1;
set $b $2;
default_type "text/html";
set_by_lua_file $num /usr/local/work/lua/get_sequare.lua;
echo "长 : $a , 宽 : $b , 面积 : $num";
}
}


如上所示,lua_request和lua_sequare都有单独配置,主要的功能分别由test_request.lua和get_sequare.lua两个脚本来实现,您可以继续查看这两个脚本,与页面结果对比;

至此,我们快速的体验了Nginx+Lua提供的web服务,接下来的章节,我们一起来看一下本章用到的镜像是如何制作的,了解如何在Docker下自己制作这个环境;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: