Enamored with the idea of rapid deployment, I've been running trying out Dokku for the site I'm currently working on - reactorbase.com. Now is a better time than ever, as you can get a droplet with dokku preinstalled up and running in mere seconds on Digital Ocean.
It's truly magic, and deploying apps is amazingly easy...except for one thing:
My app would always start up on a sequentially increasing port, ie reactorbase.com:4915, reactorbase.com:4916, etc.
This is due to the fact that dokku, as installed at Digital Ocean, uses nginx for routing. When the nginx instance in the install sees that the app is running without a virtual host file, it will automagically assign a sequential port to
process.env.PORT, which your app is likely (and should be) using to access.
However, I was determined to solve this since my
My app was running under the name hackers-node, instead of being named after the domain name (reactorbase.com), as recommended in this great article I regrooved my git dokku remote to push to an app named reactorbase.com as below:
git remote rm dokku
git remote add dokku dokku@[myip]:reactorbase.comand created an appropriate db on dokku
dokku mongodb:create reactorbase.comUnfortunately, I still had a few issues, so...
Digital Ocean recommended that I look at my nginx config file, and referred me to this github article. Within it's recommended that you edit the nginx.conf for your site. However, I noticed I didn't have one, which lead me to...
The final key for me was creating a VHOST file for my app in the dokku home directory. I found this article after searching a fair bit, and it seems that this file will tell nginx that it should run the app under the default http port (80) for the domain.
The actual process was easy enough:
cd /home/dokku vim VHOST
then editing the
VHOSTfile I just created to contain the single line
reactorbase.comand restarted nginx to reload all config
nginx -s quit nginx
After the steps above, it was just a push away - I repushed to dokku from my git repository (
git push dokku master), and voilà - movie sign.