Deployment Tasks
New as of 0.5.0
Sometimes you need to run a command on at deployment time, but before an app is completely deployed. Common use cases include:
- Checking a database is initialised
- Running database migrations
- Any commands required to set up the server (e.g. something like a Django
collectstatic
)
app.json
and scripts.dokku
Dokku accomplishes this by using an app.json
file. We (mostly) use the same format as Heroku's app.json.
However, dokku currently only supports the nodes scripts.dokku.predeploy
and scripts.dokku.postdeploy
.
Simply place an app.json
file in the root of your repository or for dockerfile apps, ADD
it to /app.
NOTE: postdeploy changes are NOT committed to the app image.
Example app.json
{
"name": "barebones nodejs",
"description": "A barebones Node.js app using Express 4.",
"keywords": [
"nodejs",
"express"
],
"repository": "https://github.com/michaelshobbs/node-js-sample",
"scripts": {
"dokku": {
"predeploy": "touch /app/predeploy.test",
"postdeploy": "curl https://some.external.api.service.com/deployment?state=success"
}
},
"env": {
"SECRET_TOKEN": {
"description": "A secret key for verifying the integrity of signed cookies.",
"value": "secret"
},
"WEB_CONCURRENCY": {
"description": "The number of processes to run.",
"generator": "echo 5"
}
},
"image": "gliderlabs/herokuish",
"addons": [
"dokku-postgres",
"dokku-redis"
],
"buildpacks": [
{
"url": "https://github.com/heroku/heroku-buildpack-nodejs"
}
]
}