How to run Erlang/Rebar3 release as a background process


I have built an umbrella app using rebar3.
rebar3 as prod tar this includes the erlang runtime so I can deployed to my live server.

Now when I run the application I have to keep the shell open otherwise it closes my erlang application
I start the app with either.
bin/myapp console or bin/myapp foreground

I have tried bin/myapp daemon but it does not start and gves me a list of commands to choose from.

So how does one start an erlang app for production to be long running in the background if built using rebar3?

Thanks in advance

The best solution? Run it using supervisor that will keep it linked to the PID 1 (or other system managed process) so it will:

  • be easy to manage, ex. systemctl start myapp/systemctl stop myapp
  • will survive VM failures
  • will be easily observable, ex. systemctl status myapp
  • you will be able to define startup and shutdown requirements and order
  • in some cases it can even handle logs for you

Thanks for the response but I am confused as to why it is so difficult to do with the built in rebar3 commands.

Reading their docs they speak of a daemon command which seems ideal but my version of rebar3 does not give me such options.

They also state that production releases should be ran in using the foreground option. Where I would think that it would make sense for a soft realtime system to be ran in the background.

I have tried to run my app using bin/myapp start which does seem to start an Linux OS process but I am unable to connect to my app with a browser when it is started with the start command.

It only seems to work correctly when I use the console or foreground command

Then check out logs, the information what is happening should be somewhere there.