写点什么

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

作者:程序员欣宸
  • 2022 年 5 月 12 日
  • 本文字数:1850 字

    阅读完需:约 6 分钟

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

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos


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

章节介绍

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


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

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

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

实战的 web 服务介绍

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


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

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

实战环境

  1. 操作系统:Ubuntu16;

  2. 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.1Unable to find image 'bolingcavalry/ubuntu16-openresty:0.0.1' locally0.0.1: Pulling from bolingcavalry/ubuntu16-openrestyf2233041f557: 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:3b8c180a222ac94d1b1b6ef017a96ab1e8359bf171fe6e6e05ffc487f323f134Status: Downloaded newer image for bolingcavalry/ubuntu16-openresty:0.0.1d132f8c553ad725ea0406b7ce295834c06bc55ff34984c13527d2c897a57235d
复制代码


  • 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 下自己制作这个环境;

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

发布于: 刚刚阅读数: 2
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018.04.19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
Docker下的OpenResty三部曲之一:极速体验_Docker_程序员欣宸_InfoQ写作社区