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

简介: 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.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提供的数据:

这里写图片描述

这里写图片描述

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

欢迎关注阿里云开发者社区博客:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...
相关文章
|
应用服务中间件 Linux Shell
使用Docker编译OpenResty支持国密ssl加密
OpenResty自身支持标准SSL协议,但不支持国密SSL协议;本文主要概述如何在docker环境下编译OpenResty镜像支持国密SSL加密。
1041 0
|
Kubernetes Java 应用服务中间件
Docker下的OpenResty三部曲之三:OpenResty加Tomcat的服务
前面两章我们实战了OpenResty的lua脚本开发,并且将web服务发布在Docker环境下,本章我们在kubernetes环境下搭建OpenResty加Tomcat的web服务
317 0
Docker下的OpenResty三部曲之三:OpenResty加Tomcat的服务
|
Kubernetes 应用服务中间件 程序员
Docker下的OpenResty三部曲之二:细说开发
在前文我们简单的体验了Nginx+Lua提供的web服务,但是并没有深入开发细节,今天就来一起实战这个镜像的制作过程
317 0
Docker下的OpenResty三部曲之二:细说开发
|
11天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
141 77
|
19天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
13天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
54 3
|
19天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
54 7
|
19天前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
29 5
|
19天前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
46 4
|
19天前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
47 3
下一篇
DataWorks