Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Elixir Releases: How to release your app

Elixir Releases: How to release your app

In my slides I show different approaches how to release Elixir applications. Is it good to start application like we do it on our local machine? What is release? How can we create it manually with OTP? How can we configure them and create additional tasks before application start? I will try to give answers to all these questions and show you that it is not so difficult how you may think.

Avatar for Aleksandr Fomin

Aleksandr Fomin

December 13, 2018
Tweet

Other Decks in Programming

Transcript

  1. $ mix run !--no-halt Works out of the box Install

    Erlang Install Elixir Install mix Install hex mix deps.get …
  2. When you have written one or more applications, you might

    want to create a complete system with these applications and a subset of the Erlang/OTP applications.
  3. Release An Erlang release is defined as a standalone node

    consisting of: 1. A set of OTP applications written or reused as part of the project, typically containing the system’s business logic. The applications can be proprietary, open source, or a combination thereof. 2. The OTP applications from the standard distribution that the aforementioned applications depend on. 3. A set of configuration and boot files, together with a start script. 4. The Erlang runtime system, including a copy of the virtual machine. Excerpt From: Francesco Cesarini Steve Vinoski. “Designing for Scalability with Erlang/OTP”.
  4. {}.

  5. {release, {"wut","0.1.0"}, {erts, "10.1"}, [{kernel, "6.1"}, {stdlib, "3.6"}, {sasl, "3.2.1"},

    {elixir, "1.7.3"}, {compiler, “7.2.5"}, {logger, “1.7.3”}, {wut, "0.1.0"}]}. wut.rel
  6. {release, {"wut","0.1.0"}, {erts, "10.1"}, [{kernel, "6.1"}, {stdlib, "3.6"}, {sasl, "3.2.1"},

    {elixir, "1.7.3"}, {compiler, “7.2.5"}, {logger, “1.7.3”}, {wut, "0.1.0"}]}. wut.rel
  7. {release, {"wut","0.1.0"}, {erts, "10.1"}, [{kernel, "6.1"}, {stdlib, "3.6"}, {sasl, "3.2.1"},

    {elixir, "1.7.3"}, {compiler, “7.2.5"}, {logger, “1.7.3”}, {wut, "0.1.0"}]}. wut.rel
  8. {release, {"wut","0.1.0"}, {erts, "10.1"}, [{kernel, "6.1"}, {stdlib, "3.6"}, {sasl, "3.2.1"},

    {elixir, "1.7.3"}, {compiler, “7.2.5"}, {logger, “1.7.3”}, {wut, "0.1.0"}]}. wut.rel
  9. Release An Erlang release is defined as a standalone node

    consisting of: 1. A set of OTP applications written or reused as part of the project, typically containing the system’s business logic. The applications can be proprietary, open source, or a combination thereof. 2. The OTP applications from the standard distribution that the aforementioned applications depend on. 3. A set of configuration and boot files, together with a start script. 4. The Erlang runtime system, including a copy of the virtual machine. Excerpt From: Francesco Cesarini Steve Vinoski. “Designing for Scalability with Erlang/OTP”.
  10. {release, {"wut","0.1.0"}, {erts, "10.1"}, [{kernel, "6.1"}, {stdlib, "3.6"}, {sasl, "3.2.1"},

    {elixir, "1.7.3"}, {compiler, “7.2.5"}, {logger, “1.7.3”}, {wut, "0.1.0"}]}. wut.rel
  11. {release, {"wut","0.1.0"}, {erts, "10.1"}, [{kernel, "6.1"}, {stdlib, "3.6"}, {sasl, "3.2.1"},

    {elixir, "1.7.3"}, {compiler, “7.2.5"}, {logger, “1.7.3”}, {wut, "0.1.0"}]}. wut.rel
  12. {release, {"wut","0.1.0"}, {erts, "10.1"}, [{kernel, "6.1"}, {stdlib, "3.6"}, {sasl, "3.2.1"},

    {elixir, "1.7.3"}, {compiler, “7.2.5"}, {logger, “1.7.3”}, {wut, "0.1.0"}]}. wut.rel
  13. {release, {"wut","0.1.0"}, {erts, "10.1"}, [{kernel, "6.1"}, {stdlib, "3.6"}, {sasl, "3.2.1"},

    {elixir, "1.7.3"}, {compiler, “7.2.5"}, {logger, “1.7.3”}, {wut, "0.1.0"}]}. wut.rel
  14. {release, {"wut","0.1.0"}, {erts, "10.1"}, [{kernel, "6.1"}, {stdlib, "3.6"}, {sasl, "3.2.1"},

    {elixir, "1.7.3"}, {compiler, "7.2.5"}, {wut, "0.1.0"}]}. wut.rel
  15. {release, {"wut","0.1.0"}, {erts, "10.1"}, [{kernel, "6.1"}, {stdlib, "3.6"}, {sasl, "3.2.1"},

    {elixir, "1.7.3"}, {compiler, "7.2.5"}, {wut, "0.1.0"}]}. wut.rel