I never thought of (ab)using Procfile for this. Just wanted to share that we had similar problem and we made a simple buildpack (https://github.com/techgaun/heroku-buildpack-mix-tasks) that runs after the elixir buildpack. All we do is specify arbitrary set of mix tasks separated by semicolon. We have bunch of mix tasks that we run on staging and ecto.migrate on production. Since we have extensive unit and integration test suites, we never had to rollback ever. Also, our postgres db is more of metadata store and we have another datastore to store timeseries data and this works well enough due to small size of postgres database.