Simple Phoenix deployment for beginners?

Hi, I was looking for a pointer of how I could most easily start with phoenix regarding deploying it to something like linode or google cloud.

Its a side project which would use some websockets and liveview but I have no experience with docker or kubernetes, was just looking for a quite straightforward way of deploying an elixir application.

So just something where I do not have too much things to do, no CI is required or test runners, just copy to my server and start it :slight_smile:

Thanks!

1 Like

The render.com deployment guide is pretty good, and works very nicely for deploying to render.com too!!

Guide is here:

I deploy my charting library sample code and package website more or less using that recipe. Code is here: https://github.com/mindok/contex-samples.

bin folder contains the release script.

The sample app uses web sockets to support liveview pages.

If you don’t need a database, render.com is about $7/month. It’s a little more complex and a few more $/s a month if you need a database or file storage, but still pretty easy and the guides are really good - I have another database-backed app deployed there.

4 Likes

Thanks, never seen render, so nice suggestion.
Then a second question was:

Should I use mix/distillery/elixir releases?

(Note, I am indeed just looking for some easy deployment, just as a start to get things going)

Been there done that (recently). My two cents:
Go with mix releases and just follow the Phoenix docs (it doesn’t get easier than that).

My experience was that the number of available blog posts and tutorials online made me a little bit confused about what was the “recommended way” to deploy whether the reality of how to do it is way simpler :wink:

After you feel comfortable with the basics steps I’ll advise looking into docker or configuring a deployment pipeline.

3 Likes

I wrote some articles about basic Phoenix Deployment (render, Edeliver, distillery) recently that may help you get started:

https://phxroad.com/skills/devops.

This one helped me a lot: https://medium.com/@j.schlacher_32979/release-a-phoenix-application-with-docker-and-postgres-28c6ae8c7184

I posted my experience deploying to a linode instance with ansible in this thread

1 Like

I started by just installing all my dependencies on a 5$ linode and got everything working!
Only thing was that when I apt-get install esl-erlang it installed a whole bunch of other packages like xserver etc which was a bit strange to me?

Thanks a lot!

Because erlang has :observer, which is built on wxWidgets, a GUI framework built on X. :slight_smile:

This means you can ssh -X user@server and you can startup a beam node and start observer to have it appear on your local machine. :slight_smile:

Although running a local node connected remotely (like over an ssh tunnel) would be faster. ^.^

I’m surprised that nobody has mentioned gigalixir so far.

2 Likes

If you want something easy and simple then I think you’d definitely want to look at http://heroku.com/ or gigalixir (as previously mentioned). They both have free tiers which is great for a side project.

I think you’d want to stay away from docker and kubernetes if you’re just getting started.

4 Likes

I found this tutorial for deploying phoenix with dokku to be incredibly helpful. One of the downsides with dokku is that it doesn’t do hot code updating, but for a simple project, that’s not a deep concern.

https://dev.to/mplatts/deploying-phoenix-via-dokku-1gip

2 Likes