Elixir and Phoenix are now officially supported

Today we officialize our support for Elixir and Phoenix!

We have been testing this with some of our customers for quite a while now. So there it is, you can now deploy any Elixir code, like a Phoenix based website for instance. But first, if you are not familiar with both Elixir and Phoenix, let's see what it is.

Straight from Wikipedia:

Elixir is a functional, concurrent, general-purpose programming language that runs on the Erlang virtual machine. Elixir builds on top of Erlang and shares the same abstractions for building distributed, fault-tolerant applications. Elixir also provides productive tooling and extensible design.

Yes, it's using Erlang. The language and VM that powers, among others RabbitMQ, CouchDB, Facebook/Whatsapp messaging backend, and many Telcos backend. We are talking massive scale, concurrent usage here. To go back to elixir, here's what some simple code looks like:

defmodule KVTest do
  use ExUnit.Case

  def hello do
    :world
  end

  test "greets the world" do
    assert hello() == :world
  end
end

It feels like a functional Ruby.

Elixir applications use the Mix build tool as a task runner. With that, you can scaffold projects and code, compile, test, run, manage dependencies, run database migrations, and more. Everything runs on top of OTP (Open Telecom Platform), a set of Erlang libraries and tools. And inside OTP you will find BEAM, the virtual machine that compiles Erlang and Elixir source code into bytecode and run it. So this is what you have access to when you run and Elixir application on Clever Cloud.

The most wide-used Elixir Framework is Phoenix. It feels like Ruby on Rails. And this is what we'll see how to deploy today. If you want to follow, make sure you have installed clever-tools and Mix

mix phx.new hello # generate a project, say Yes to Fetch and install dependencies.
clever addon create postgresql-addon hello-phoenix-pg # create a postgres database
clever create --type elixir hello-phoenix # create an erlang application on Clever Cloud
clever service link-addon hello-phoenix-pg # link the database
clever env set CC_PHOENIX_ASSETS_DIR assets # Tell Clever Cloud where to run the js build

This will generate all the code you need to start a Phoenix application. Just like Rails, there are other tasks you can use to generate code. Take a look at the list of available tasks.

Next, we should configure the database access. By default the DATABASE_URL variable is defined in ./config/prod.secret.exs. In this file you will define all the secrets, which is to say anything that should not be hardcoded in your configuration files. The DATABASE_URL should be changed to POSTGRESQL_ADDON_URI, which is what will be available in your app. There are three other variables we can use in this file. The PORT is already configured, we just have do set a secret and a pool size limit:

clever env set SECRET_KEY_BASE Th3S3Cr3t
clever env set POOL_SIZE 5

And now all there is to do is run these:

git init # initialize a git repository
git add . # add all the files
git commit -m"init" first commit
clever deploy # push your code to Clever Cloud
clever open # open the site in your default browser

And you should see the Phoenix default app running 🙂 As with most applications running on Clever Cloud, you can configure your build and deployment through environment variables. Here's the current list of options:

Choose the Elixir version between ‘1.8’ or `1.9`Folder in which your Phoenix assets are located.
Name
Description
Default value
CC_ELIXIR_VERSION `1.9`
CC_PHOENIX_ASSETS_DIR
CC_PHOENIX_DIGEST_GOAL Phoenix digest goal. phx.digest
CC_PHOENIX_SERVER_GOAL Phoenix server goal. phx.server
CC_PHOENIX_RUN_ECTO_MIGRATE Whether to run ‘mix ecto.migrate’ or not. true

Now you know all the basics to start an Elixir or Phoenix project. Have a look at some other Elixir frameworks like the Bot Framework Hedwig or the simpler web one like Raxx, trot or Maru. Please let us know what you think about this 🙂 Happy hacking!

Blog

À lire également

Clever Cloud announces 11 new products at its Clever Cloud Fest

Clever Cloud is celebrating its 15th anniversary with the Clever Cloud Fest on 6 and 7 February 2025 in Nantes. This event will bring together customers and partners, during which Clever Cloud will unveil 11 new products and an international growth strategy.
Company Événements Press

What is Clever AI?

AI services are everywhere, but the sheer number and diversity of them makes it harder for developers to manage them. All the more so when they work in a team. That's why we came up with Clever AI: a multi-vendor, multi-model range of solutions to simplify access to AI for businesses.
Company

Protect yourself: beware of job scams spoofing Clever Cloud’s brand

At Clever Cloud, we provide reliable, secure cloud hosting services for businesses and developers worldwide. Unfortunately, our reputation is being exploited by malicious actors engaging in fraudulent activities under the guise of our company name. We want to set the record straight and help protect you from falling victim to these scams.
Company