❤ Parse
Docker
☁️ One-Click Deploy
⭐ Features
- Parse Server with MongoDB
- Parse Cloud Code via git with auto rebuild
- Parse Push Notification : iOS, Android
- Parse Live Query
- Parse Dashboard
- Tested Docker Image
- Deploy with Docker
- Deploy with Docker Compose
- Deploy with one click
📺 Overview
🙈 Sneak Preview
🚀 Deployments
📎 Deploy with Docker
$ docker run -d -p 27017:27017 --name mongo mongo
$ docker run -d \
-e APP_ID=${APP_ID} \
-e MASTER_KEY=${MASTER_KEY} \
-p 1337:1337 \
--link mongo \
--name parse-server \
yongjhih/parse-server
$ docker run -d \
-p 2022:22 \
--volumes-from parse-server \
--name parse-cloud-code-git \
yongjhih/parse-server:git
# Test parse-server
$ curl -X POST \
-H "X-Parse-Application-Id: {appId}" \
-H "Content-Type: application/json" \
-d '{}' \
http://localhost:1337/parse/functions/hello
$ docker run -d \
-e APP_ID=${APP_ID} \
-e MASTER_KEY=${MASTER_KEY} \
-e SERVER_URL=http://localhost:1337/parse \
-p 4040:4040 \
--link parse-server \
--name parse-dashboard \
yongjhih/parse-dashboard
# The above command will asuume you will later create a ssh
# and log into the dashboard remotely in production.
# However, to see the dashboard instanly using either
# localhost:4040 or someip:4040(if hosted somewhere remotely)
# then you need to add extra option to allowInsecureHTTP like
# It is also required that you create username and password
# before accessing the portal else you cant get in
$ docker run -d \
-e APP_ID=$(APP_ID)\
-e MASTER_KEY=$(MASTER_KEY)\
-e SERVER_URL=http://localhost:1337/parse \
-e PARSE_DASHBOARD_ALLOW_INSECURE_HTTP=1 \
-e USER1=yourUsername \
-e USER1_PASSWORD=yourUsernamesPassword \
-p 4040:4040 \
--link parse-server \
--name parse-dashboard \
yongjhih/parse-dashboard
📎 Deploy with Docker Compose
$ wget https://github.com/yongjhih/docker-parse-server/raw/master/docker-compose.yml
$ APP_ID=YOUR_APP_ID MASTER_KEY=YOUR_MASTER_KEY PARSE_DASHBOARD_ALLOW_INSECURE_HTTP=1 SERVER_URL=http://localhost:1337/parse docker-compose up -d
Note
- We use
PARSE_DASHBOARD_ALLOW_INSECURE_HTTP=1
to allow insecure via development environment.
$ wget https://github.com/yongjhih/docker-parse-server/raw/master/docker-compose.yml -O - | APP_ID=YOUR_APP_ID MASTER_KEY=YOUR_MASTER_KEY docker-compose up -d -f - # not supported for docker-compose container
📎 Deploy to Cloud Services
- Heroku + Mongolab Development
- AWS Elastic Beanstalk
- Microsoft Azure App Service
- Google App Engine
- Scalingo
⚡ Advance topics
- How to use with existing mongodb with DATABASE_URI
- How to use with existing parse-cloud-code
- How to specify parse-server version
- How to specify latest commit of parse-server
- How to start parse dashboard as standalone
- How to setup SSL with letsencrypt
- How to setup push notification
- How to integrate parse-cloud-code image on GitHub and DockerHub
- How to config Docker
- How to config Docker Compose
- How to import ssh-key from github
🔥 Server Side Developments
How to push cloud code to server
# This command wil create a SSH keys for you as
# ~/.ssh/id_rsa.pub and another private key.
# you can leave the options balnk by pressing enter.
$ ssh-keygen -t rsa
# If git container name is `parse-cloud-code-git`
$ docker exec -i parse-cloud-code-git ssh-add-key < ~/.ssh/id_rsa.pub
# port 2022, repo path is `/parse-cloud-code`
$ git clone ssh://git@localhost:2022/parse-cloud-code
$ cd parse-cloud-code
$ echo "Parse.Cloud.define('hello', function(req, res) { res.success('Hi, git'); });" > main.js
$ git add main.js && git commit -m 'Update main.js'
$ git push origin master
$ curl -X POST \
-H "X-Parse-Application-Id: ${APP_ID}" \
-H "Content-Type: application/json" \
-d '{}' \
http://localhost:1337/parse/functions/hello
📱 Client Side Developments
You can use the REST API, the JavaScript SDK, and any of our open-source SDKs:
📎 curl example
curl -X POST \
-H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "Content-Type: application/json" \
-d '{"score":1337,"playerName":"Sean Plott","cheatMode":false}' \
http://localhost:1337/parse/classes/GameScore
curl -X POST \
-H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "Content-Type: application/json" \
-d '{}' \
http://localhost:1337/parse/functions/hello
curl -H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "X-Parse-Master-Key: YOUR_MASTER_KEY" \
-H "Content-Type: application/json" \
http://localhost:1337/parse/serverInfo
📎 JavaScript example
Parse.initialize('YOUR_APP_ID','unused');
Parse.serverURL = 'https://whatever.herokuapp.com';
var obj = new Parse.Object('GameScore');
obj.set('score',1337);
obj.save().then(function(obj) {
console.log(obj.toJSON());
var query = new Parse.Query('GameScore');
query.get(obj.id).then(function(objAgain) {
console.log(objAgain.toJSON());
}, function(err) {console.log(err); });
}, function(err) { console.log(err); });
📎 Android example
//in your application class
Parse.initialize(new Parse.Configuration.Builder(getApplicationContext())
.applicationId("YOUR_APP_ID")
.clientKey("YOUR_CLIENT_ID")
.server("http://YOUR_SERVER_URL/parse/") // '/' important after 'parse'
.build());
ParseObject testObject = new ParseObject("TestObject");
testObject.put("foo", "bar");
testObject.saveInBackground();
📎 iOS example
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool {
let configuration = ParseClientConfiguration {
$0.applicationId = "YOUR_APP_ID"
$0.clientKey = "YOUR_CLIENT_ID"
$0.server = "http://YOUR_SERVER_URL/parse"
}
Parse.initializeWithConfiguration(configuration)
}
}
👀 See Also
- https://github.com/ParsePlatform/parse-server
- http://blog.parse.com/announcements/introducing-parse-server-and-the-database-migration-tool/
- https://parse.com/docs/server/guide#migrating
- https://hub.docker.com/r/yongjhih/parse-server/
- https://github.com/yongjhih/parse-cloud-code
- https://hub.docker.com/r/yongjhih/parse-cloud-code/
- https://medium.com/cowbear-coder/migration-of-parse-server-with-docker-part1-87034cc29978
- https://github.com/yongjhih/docker-parse-dashboard
- Docker
❤ Parse - DigitalOcean
❤ Parse