Elixir Deployment Mini-series

Hey all,

I spent some time over the last few weeks diving into Distillery and edeliver. I wrote up a handful of articles outlining the basics of using these tools to build and deploy initial releases and upgrade releases.

Deploying Elixir Applications with Distillery
Upgrade Releases with Distillery
Simplifying Elixir Releases with Edeliver
Upgrade Releases with Edeliver

These posts mostly go through the happy path of building and deploying a release/upgrade highlighting a few of the gatchas I ran into along the way. Hopefully they help some people out!


Nice. Thanks for sharing this info. Currently, I am planning to use Distillery. I guess I need to check what’s the difference between them. :slight_smile:


The TL;DR is mostly this:

Distillery builds releases. Edeliver is a friendly interface on top of Distillery that simplifies the process, can store releases in an archive location, and will help you deploy them quickly.

We use Edeliver at work, with a Docker container as the “build host” (to closely mimic the production environment). It’s really convenient :slight_smile:


Wow, then I definitely will look into Edeliver if it simplifies things.
About docker, do you use this: https://hub.docker.com/_/elixir/ ?

1 Like

Nailed it.


No, we just have a Dockerfile in the project repo that starts with an Ubuntu image and installs Elixir + Phoenix w/ deps. At the end, it injects your default SSH key and boots sshd…

This is all wrapped up in a simple “build_release.sh” script that builds the Docker image, starts it, and runs the Edeliver build process - which will SSH into the build host and do the work there.