Deploy a Phoenix App


This is a Hello World Phoenix application that you can use as a starting point for your own Phoenix project on Render.

This guide uses Mix for deployment and is only suitable for simple projects. We recommend Distillery for most production deployments and describe the process in our Phoenix Distillery guide.

The sample app, derived from Phoenix’s Up and Running tutorial, is deployed at https://phoenix.onrender.com.

  1. Create a new PostgreSQL database on Render.

  2. Fork render-examples/phoenix-hello and create a new Web Service, giving Render’s GitHub app permission to access your forked repo.

    Render supplies the PORT and RENDER_APP_HOSTNAME environment variables for config/prod.exs.

    config :phoenix_hello, PhoenixHelloWeb.Endpoint,
     http: [:inet6, port: System.get_env("PORT") || 4000], url: [host: System.get_env("RENDER_APP_HOSTNAME"), port: 80], cache_static_manifest: "priv/static/cache_manifest.json",
     secret_key_base: Map.fetch!(System.get_env(), "SECRET_KEY_BASE")

    If you add a custom domain to your Render app, don’t forget to change the host to your new domain.

  3. Use the following values during creation:

    Build Command: ./build.sh

    Here are the contents of build.sh:

    #!/usr/bin/env bash
    
    # Initial setup
    mix deps.get --only prod
    MIX_ENV=prod mix compile
    
    # Compile assets
    cd assets && npm install && npm run deploy && cd ..
    
    mix phx.digest

    Start Command: mix phx.server

    Under the Advanced section, add two new environment variables:

    KeyValue
    SECRET_KEY_BASEA sufficiently strong secret. You can generate a secret locally by running mix phx.gen.secret
    DATABASE_URLThe internal connection string of the database you created above.

That’s it! Your web service will be live on your Render URL as soon as the build finishes.