- 搭建Redis
#它会自动下载redis最新版本的镜像
docker pull redis
#根据镜像创建容器,绑定宿主机6379端口用于外网访问容器的redis
docker run -itd --name redis-test -p 6379:6379 redis
#进入容器
docker exec -it redis-test bash
#进入redis
redis-cli
- 搭建OpenResty
#下载openresty镜像
docker pull sevenyuan/openresty
#创建容器
docker run -itd --name openrest-test -p 8080:8080 -p 80:80 sevenyuan/openresty
#进入容器
docker exec -it openrest-test bash
#这个镜像很多基本命令都没有,所以要安装这些
apt-get update
apt-get install vim
apt-get install curl
#设置openresty的目录到环境变量文件(/etc/profile)方便使用命令
PATH=/usr/local/openresty/nginx/sbin:$PATH
export PATH
#用source命令重新加载环境变量文件
source /etc/profile
- 编写nginx.conf文件并启动
#在/usr/local目录创建自定义配置目录,-p参数可以创建多级目录
mkdir -p test/conf
#写第一个Nginx文件 nginx.conf
server {
listen 8080;
location / {
default_type text/html;
content_by_lua_block {
ngx.say("<p>hello, world</p>")
}
}
}
#把这个Nginx加到OpenResty的nginx配置文件里去
vim /usr/local/openresty/nginx/conf/nginx.conf
#在Http内加上这句,每次启动都会加载这个自定义目录的所有conf类型文件
include /usr/local/test/conf/*.conf;
#然后重启Openresty 命令跟nginx的一样
openresty -s reload
#调用8080端口查看效果,会看到显示Hello World即为成功
curl localhost:8080
- 编写连接Redis的Lua文件
#还是在/usr/local/test/conf目录下创建一个lua文件
#require函数是Lua是提供的,用于引入Lua模块 resty.redis就是Openresty内置的redis模块
local redis = require("resty.redis")
local redisCache = redis:new()
#因为Redis安装在另一个容器内,仅暴露6379,所以connect方法的Ip参数要填宿主机IP才能实现通信
local ok ,err = redisCache:connect("宿主机IP",6379)
redisCache:set_timeout(1000)
if not ok then
ngx.say("failed to connect:",err)
redisCache:close()
return
end
#name这个key是我在redis容器加的一个key,用来试验Openresty能不能获取到值用的
local name ,err = redisCache:get("name")
ngx.say(name)
ok ,err =redisCache:close()
- 编写连接Redis的Nginx配置文件
#配置文件同样在/usr/local/test/conf目录下,名字叫nginxLua.conf
server {
listen 8081;
location / {
default_type text/html;
content_by_lua_file /usr/local/wcb/redis.lua;
}
}
#然后重启openResty
openresty -s reload
#访问,看下效果
curl localhost:8081 就能看到我设置在redis中对应name的值了
到此,openResty连接Redis的试验就成功了。