is there any tools like capistrano or mina (deployment tools for ruby on rails projects) for deployment Elixir / Phoenix Framework apps?
3 Answers
That depends on what you need. But building a release with exrm allows you to think about deployments completely differently. With releases deployment is much simpler, up to the point you often don't need such sophisticated tools like capistrano or mina. If you only need a simple way to deploy to server, then when you generate a release you can simply copy it to the server with scp, untar, and run. It's couple lines of shell script to do this. Nothing fancy is required.
Another idea, I was playing with, but I wasn't able to put it into production yet, was generating an OS package based on the release. This would allow for great flexibility and still one file deployment. It would also allow you to express dependency of your application on system level packages in a simple way.
If you have many additional things to manage besides the elixir application, you're deploying, I'd say that using tools like mina with elixir is a perfectly valid solution. It's not really ruby specific.
The Phoenix documentation has a section on deployment. It seems as though, once a release has been generated with exrm, any automation tool capable of running remote commands (e.g. Ansible and the like) can be used to deploy the release.
As of the date of writing, Distillery is a really user-friendly deployment tool for Elixir/Phoenix ecosystem. As a matter of fact, it has fully replaced the use of exrm for deployment purpose.