Docker 安装 Webdis
前言
Webdis 是一个非常简单的 Web 服务器,专门为 Redis 提供 HTTP 接口,使用 hiredis、jansson、libevent、http-parser 等组件。下面将介绍 Docker 安装部署 Webdis 与 Redis,由于篇幅有限不会详细介绍部署过程,但会给出 Docker 相关的主要配置内容。如需更详细的教程内容,可参考 Webdis Github 上的说明文档。
软件环境
环境名称 | 版本 |
---|---|
docker-ce | 18.09.3 |
docker-compose | 1.24.0-rc1 |
linux 发行版 | CentOS Linux release 7.6.1810 (Core) |
Webdis 镜像的 DockerFile
1 | from debian:stretch |
构建 Webdis 镜像
1 | # 创建DockerFile |
Redis 的配置文件
Redis 配置文件中的主要内容(redis.conf)如下:
1 | # 注释掉下面这一行,不绑定任何主机IP |
Webdis 的配置文件
Webdis 配置文件(webdis.prod.json)的完整内容如下,具体的 ACL 规则可参考 Github 上的说明文档。考虑到服务器安全,下面配置了 Http Auth 的用户名和密码。
1 | { |
Docker-Compose 的配置文件
使用 Docker-Compose 管理容器,其中 docker-compose.yml 配置文件的完整内容如下(包括 Redis、Webdis)。具体的数据卷挂载目录,需要根据自己的实际情况进行修改。
1 | version: "3.5" |
创建并启动 Docker 容器
1 | # 进入docker-compose.yml配置文件所在的目录 |
CURL 命令测试 Webdis 与 Redis 是否正常工作
1 | # 写入key |
NodeJS 代码测试 Webdis 与 Redis 是否正常工作
1 | var request = require('request'); |
WebSocket 与 Pub/Sub 的支持
Webdis 默认不启用 WebSocket 与 Pub/Sub 的支持,如需要相关功能,可以参考以下的步骤进行操作。官方声明 Websocket 与 Pub/Sub 功能是实验性的,生产环境慎用。经过反复测试,按照下面的步骤进行操作,JavaScript 代码依然无法连接 WebSocket、Pub/Sub 服务,后续再想办法解决。
1 | # 连接上面创建的webdis容器 |
JavaScript 代码测试 WebSocket 服务
1 | function testJSON() { |
JavaScript 代码测试 Pub/Sub 服务
1 | var previous_response_length = 0 |
Webdis 的 SSL 支持
Webdis 官方默认不支持 SSL,如果需要 SSL 的支持,可以使用 Nginx 作为反向代理服务器,即配置 Nginx 的代理与 SSL 证书,然后将请求转发给 Webdis,这样就可以提高 Webdis 连接的安全性。Nginx 的示例配置内容如下:
1 | server { |
1 | # 使用CURL命令测试Nginx的代理与SSL配置是否正确,其中example.com是绑定了SSL证书的域名 |