MongoDB 本身是不支持 RESTFul 的接口的, 但是有很多第三方的工具可以把它转成RESTful的接口.
MongoDB 官方就有一个网页介绍了几个常用的工具
https://docs.mongodb.com/ecosystem/tools/http-interfaces/
Eve (Python)
RESTHeart (Java)
DrowsyDromedary (Ruby)
Crest (Node.jS)
AMID
Kule
DreamFactory
MongoDb Atlas 是 mongo db 官方提供的一个 mongo db 的数据库服务. 注册后, 可以在他们的后台创建mongo db 数据库, 你的客户端就可以直接使用了. Mongo db atlas 也提供了自已的 RESTFul API.
https://docs.atlas.mongodb.com/api/
有一个好消息是 Mongo DB atlas 提供一个免费的 Free Tier, 有 512M 的容量. 而且是3个 nodes 的 cluster.
更好的消息是, 用这Free Tier 不收取传说中巨坑的 Data Transfer Fee, 所以可以真正的免费使用.
所以我就考虑把一些数据量不大的应用转到这个服务上来. 看上去还蛮安全的. 因为我大部分的应用都是使用的 RestHeart 这个API. 所以我今天就来教教大家怎么样运行一个 RestHeart 的 Docker 容器, 并把它连接到 Mongo DB Atlas 的 Cluster
首先你要注册并创建一个 Mongo DB Atlas 的 Cluster, 直接去官方注册并跟着提示走就可以了
https://cloud.mongodb.com
你会在这个过程中添加IP白名单和创建数据库用户名密码.
然后, 我们需要连接这个数据库的字串
按上图操作复制你的数据库连接字串, 记得把其中的
以下命令需要你已经安装 docker
Windows 下 docker 的安装可以看这个视频教程
linux 下直接运行 docker, 如果没有安装, 一般都会提示你用什么命令一键安装
然后, 在你的服务器中运行
sudo docker run \ --name restheart \ --rm \ -p '8082:8080' \ --env MONGO_URI='mongodb+srv://fennng:somepassword@cluster0-xxx.azure.mongodb.net/test?retryWrites=true&w=majority' \ softinstigate/restheart:3.6.0
这样, 你的Restheart 服务器就好了, 它会运行在 8082 这个端口, 当然你可以把它改成其它端口.
要删除它直接 Control+D, 如果你用了 -d 参数后台运行, 使用以下命令删除 (也可删除前台运行的容器)
sudo docker rm -f restheart
注意: 这样创建的Restheart 服务器就算有密码也是不安全的, 因为是跑在 HTTP下, 而不是HTTPS. 所以还要加一个反向代理.
restheart 的 docker 容器本身也支持 4443的 HTTPS端口, 但是因为我用反向代理, 所以我没有用过, 就不详述了.
关于Restheart 的用户名和密码设置可以参考这篇文章
如果你的应用和 Restheart 在同一台服务器上, 你的restheart 端口只向本机开放, 这种情况你可能不需要用户名和密码, 你可以直接把 softinstigate/restheart:3.6.0 改成 softinstigate/restheart:latest
因为最新版的 restheart 已经把用户模块单独分离出来, 用最新版的restheart默认是不需要用户名和密码的.