Elixir Dockerfiles

Hi,

I am quite new to Elixir and want to deploy my Elixir app in production. But there aren’t too many examples of how to deploy an OTP app. Does anyone have any good guides or example Dockerfiles to help? Keep in mind this is not a Phoenix app, just a vanilla Elixir app that uses Supervisor to launch a few children.

-R

Hi, have you seen our deployment wiki?

Don’t think there is anything specific to Docker in it so this thread might also be of use:

2 Likes

The second thread that @AstonJ mentioned has a link to a super blog post on Dockerizing Elixir and Phoenix Apps. That is largely what I followed when deploying ibGib, and I journaled the whole process in my Deploy 0.1.0 GitHub issue. And you can always ask any specific questions here on the forum or in slack if you hit a wall.

As an aside, I am not sure that it being a non-Phoenix app would make a big difference. I think you would still basically need to create a release and deploy the Docker container. The main difference being that you wouldn’t necessarily need to do the Phoenix-specific things like configuring the endpoint, http/s ports, etc. :thinking:

3 Likes

Thank you so much everyone! This was really helpful!

2 Likes

Hi, I’ve had much luck using Distillery and Docker for the deployment of my Phoenix API project. I think it wouldn’t matter if your app is Phoenix or not, as long as it can be bundled into an OTP release.

Here’s my production Dockerfile. I used alpine linux for optimizing the image size (my app image weighs only 41.34 MB, would be over ~700 I think if I used ubuntu as the base image). It works perfectly so far.

I’ve used a different Dockerfile for building the release (also using it for development). Several files you might be interested in: Dockerfile.dev, docker-compose.yml, docker-compose.build.yml, and build-release.sh.

(Please don’t mind the README; it’s in Indonesian.)

1 Like

I also have docker images in many version for Erlang, Elixir and Phoenix, based on Ubuntu Jessie: https://hub.docker.com/r/pedroassumpcao/