装一个自己的 Parse Server

使用 Docker 或直接在 macOS 上安装一个 Parse Server。

# 使用 Docker 安装

docker run -v ~/Docker/my-mongo:/data --name my-mongo -d mongo

docker run -p 6379:6379 \
-v ~/Docker/my-redis:/data \
--name my-redis \
-d redis redis-server --appendonly yes
/* config.json */
{
  "appId": "appId",
  "masterKey": "masterKey",
  "databaseURI": "mongodb://my-mongo/parse",
  "clientKey": "clientKey",
  "javascriptKey": "javascriptKey",
  "restAPIKey": "restAPIKey",
  "dotNetKey": "dotNetKey",
  "webhookKey": "webhookKey"
}
/* package.json */
{
  "name": "my-parse",
  "scripts": {
    "start": "parse-server config.json"
  },
  "dependencies": {
    "parse-server": "^2.2.25"
  }
}
## Dockerfile
FROM node
MAINTAINER keng42
RUN mkdir parse
ADD . /parse
WORKDIR /parse
RUN npm install --registry=https://registry.npm.taobao.org
EXPOSE 1337
CMD [ "npm", "start" ]
docker build -t my-parse .
docker run -d -p 1337:1337 --link my-mongo --name my-parse my-parse

# 直接在 macOS 安装

npm i -g mongodb-runner parse-server parse-dashboard
mongodb-runner start
parse-server parse-server-config.json
parse-dashboard parse-dashboard-config.json
/* parse-dashboard-config.json */
{
  "appId": "appId",
  "masterKey": "masterKey",
  "serverURL": "http://localhost:1337/parse",
  "appName": "meat",
  "port": "1338"
}

# MongoDB 权限配置

cd ~/.mongodb # mongodb 安装目录

## 第一次启动数据库
mongod --dbpath ./data/db

## 开启验证功能启动数据库
mongod --dbpath ./data/db --auth

## 关闭数据库
lsof -i tcp:27017
kill -2 <PID>

## 连接数据库
mongo

## 添加管理员
> use admin
> db.createUser({
  user: "cured",
  pwd: "fcpc2019",
  roles: [{
    role: "userAdminAnyDatabase",
    db: "admin"
  }]
})

## 添加普通用户
> use parse
> db.createUser({
  user: "meat",
  pwd: "fcpc2019",
  roles: [{
    role: "readWrite",
    db: "parse"
  }]
})

## 验证用户权限
> use admin
> db.auth('cured','fcpc2019')
> use parse
> db.auth('meat','fcpc2019')

相应的,parse-server 配置文件修改

mongodb://meat:[email protected]/parse

#

Q: Docker 里启动 parse 的时候总是

warn: Unable to ensure uniqueness for usernames:  MongoError: failed to connect to server [localhost:27017] on first connect

A: 配置文件 mongodb://localhost/dbname 应该修改为 mongodb://mongo/dbname

其中 mongo 是连接的 mongodb 容器的 IP 地址,由 docker 在连接两个容器的时候修改的 host。

所以其实这个 warn 想表达的是:根本就连不上数据库!

# 参考

如何对 MongoDB 3.2.7 进行用户权限管理配置

mongodb 数据库的启动和停止

parse-server 官方 Dockerfile

Docker 容器连接

parse-server 文档