Add-on Services

Memcached and Redis plugins are pre-installed on your Dokku application server. To read about how to create these services and link them to your application, see the following project repositories:

Customizing your Stack with Heroku Buildpacks

Dokku uses Heroku's open sourced buildpacks framework, which provide compatibility for many popular languages and frameworks. Besides the official buildpacks supported by Heroku, many others can be found in places such as GitHub. You can also use create your own buildpack. Refer to the external Dokku buildpacks reference for details. If you'd like to install a new buildpack and require assistance, don't hesitate to ask.

Using Multiple Buildpacks

If your app is comprised of multiple stack technologies, e.g. Node.JS and PHP, you will need to let Dokku know, otherwise, it will attempt to build for only the first programming language it detects.

Add a file named .buildpacks to the root of your project, with the following contents:

https://github.com/heroku/heroku-buildpack-nodejs.git
https://github.com/heroku/heroku-buildpack-php.git

Docker

If you're already using Docker in your local development workflow, Dokku is compatible. See Dokku reference for details. We recommend using the Healthcare Blocks official images as base images, when possible. We will be publishing more images periodically. If you need access to the private GitHub hosting these images, please contact us.

Docker-based Continuous Delivery

If you've already implemented a CI / CD process that builds and deploys Docker images to Docker Hub or a private registry, the Dokku Registry plugin can be added to your environment to enhance your workflow. Please contact us to enable this plugin.

Dokku Plugins

To view a list of installed Dokku plugins, do:

dokku plugin

Serving Static Assets

Dokku proxies all requests via Nginx directly to the backend application process, allowing your application to set headers and other custom behaviors. For performance reasons, a production-specific best practice is to use a CDN such as AWS CloudFront and either store static assets in S3 or define a custom origin pointing back to your server. Some application frameworks require additional steps for your application to be able to serve assets:

If you do want Nginx to serve static assets instead of your backend app, you will need to add a custom Nginx include file as described here.