Daniel Doubrovkine bio photo

Daniel Doubrovkine

aka dB., CTO at artsy.net, fun at playplay.io, NYC

Email Twitter LinkedIn Github Strava

This was expanded from Running Slack Bots on DigitalOcean with Dokku.

Let’s run MongoDB inside Dokku on DigitalOcean.

Install the Plugin

$ dokku plugin:install https://github.com/dokku/dokku-mongo.git mongo

Create a MongoDB Instance

This starts a MongoDB instance which is not accessible from the outside world. Replace database-name with your own.

$ dokku mongo:create database-name
-----> Starting container
       Waiting for container to be ready
=====> MongoDB container created: database-name
       DSN: mongodb://database-name:******@dokku-mongo-database-name:27017/database-name

Logically connect the MongoDB instance with an app and publish a MONGO_URL configuration setting to it. Replace database-name and app-name with your own.

$ dokku mongo:link database-name app-name
no config vars for app-name
-----> Setting config vars
       MONGO_URL: mongodb://database-name:******@dokku-mongo-market-bot:27017/database-name
-----> Restarting app app-name
       ...

You’re done.

In the future you might want to upgrade both the plugin and the MongoDB instance itself.

Upgrade the Plugin

$ dokku plugin:update mongo

Plugin (mongo) updated
3.4.9: Pulling from library/mongo
Digest: sha256:97c51a36d08871557c02e64d20a9a6b645b16ce387b39ae4414609c39dfc439c
Status: Downloaded newer image for mongo:3.4.9
0.2: Pulling from dokkupaas/wait
Digest: sha256:a829d552e0e55c858b70a7d6f0e5bc9a5cc18b42bc8832271deaff3fed5fa212
Status: Downloaded newer image for dokkupaas/wait:0.2
0.8.0: Pulling from dokkupaas/s3backup
Digest: sha256:032ebf48626bddd422a88ae7e7675187b296a81488ec738f28c53dbf57f94788
Status: Downloaded newer image for dokkupaas/s3backup:0.8.0
latest: Pulling from library/busybox
75a0e65efd51: Pull complete
Digest: sha256:d21b79794850b4b15d8d332b451d95351d14c951542942a816eea69c9e04b240
Status: Downloaded newer image for busybox:latest

Upgrade the Database

This was discussed in dokku-mongo#74.

For a minor upgrade in which the database version doesn’t require any intervention (eg. 3.2.9 to 3.4.9) you can do the following.

$ dokku mongo:stop database-name
=====> Stopping container
       Container stopped

$ dokku mongo:info database-name --id
6a56353106a3c3559e62b29f447891239dc82fa4166d711dc41cdf9051bd8b4c

$ docker rm 6a56353106a3c3559e62b29f447891239dc82fa4166d711dc41cdf9051bd8b4c
6a56353106a3c3559e62b29f447891239dc82fa4166d711dc41cdf9051bd8b4c

$ MONGO_IMAGE_VERSION=3.4.9 dokku mongo:start database-name
=====> Starting container
       Waiting for container to be ready

Backup MongoDB

See Backing up MongoDB Databases in Dokku Containers to Dropbox.