The way you presented these options are a little confusing, because some of them are not ways to deploy a Phoenix app - maybe this is a language barrier? (natural language, not programming language)
gigalixir is what you want, if you do not want to deal with infrastructure. Run one command to deploy, and be done with it.
distillery can be used with, for example, edeliver but it does not deploy your Phoenix app. from the README:
it takes your Mix project and produces an Erlang/OTP release, a distilled form of your raw application’s components; a single package which can be deployed anywhere
mix release same as distillery but different ![]()
docker container is, in my own understanding (I might be very wrong here), a way of running apps in separated environments, very close to (but apparently different to) virtual machines. From their own website:
Containers are an abstraction at the app layer that packages code and dependencies together. Multiple containers can run on the same machine and share the OS kernel with other containers, each running as isolated processes in user space.
My personal preference to deploying a Phoenix app in production is a Ubuntu droplet on digital ocean, install postgres, nginx, and elixir, and then use that server as the build server with edeliver. Once it’s set up, it’s as easy as running mix edeliver update production, and maybe mix edeliver migrate production.






















