Official Heroku/Dokku Buildpack

Hey All,

I just finished deploying my Phoenix app to a VPS running dokku and ran into a couple of issues which made it challenging to get things working:

  • You need two different buildpacks, and two different .config files to adjust the configuration on each buildpack. If you document the buildpacks you use in-code
  • The phoenix buildpack does not work out of the box (here’s my PR to fix this). This may have been a dokku-specific thing, but cp -r failed to succeed because of the symlink’d node packages in the new default package.json.

However, once I got things running, deployment is incredibly easy and seamless! I had some thoughts on how we might improve the phoenix/elixir deployment story on dokku/heroku and wanted to see what folks thought:

  1. Right now, the phoenix buildpack is maintained largely by one person and hasn’t been touched in close to a year. What if we were to host the buildpack on the @pheonixframework github user to allow others to more easily contribute to keep the buildpack up to date.
  2. With an ‘official’ buildpack, we may be able to submit the buildpack to the herokuish project as a default buildpack so Phoenix projects can be detected automatically.
  3. The phoenix buildpack has a lot of legacy code supporting older versions of phoenix. It wouldn’t be a huge effort to rip out all of the legacy support and merge the phoenix build logic into the elixir buildpack. Having a single buildpack to use for Elixir + Phoenix makes a lot of sense (it’s how the ruby/ruby on rails buildpack is structured).

I’ve really enjoyed the elixir + phoenix development experience, but the deployment situation has felt underdeveloped. IMHO improving the default deployment experience on heroku/dokku will be super helpful for new developers, and hopefully increase adoption a bit.

Curious what everyone thinks!

6 Likes

Friendly ping: would be curious here some thoughts!