Releases
| mix release | |
| Run the binary | |
| Release env | |
| Hot upgrades note |
mix release
A release packs the application with the runtime into one folder that runs without the full toolchain. Build it after tests pass and production config is in place.
mix release
The output lands under _build/ with start scripts included. Rebuild from a clean state whenever config or dependencies change.
Run the binary
Start the packaged program with its own script, not with Mix. The script boots the release in the current environment and keeps tooling out of production.
_build/prod/rel/hello/bin/hello start
Watch the first boot closely and stop at the first error. A release that starts cleanly once usually starts cleanly everywhere with the same settings.
Release env
Production values arrive through the machine, not through the code. Read them at boot from config/runtime.exs so one artifact serves staging and production with different settings.
System.get_env("PORT")
Hot upgrades note
The platform supports upgrading a running system without stopping it. The machinery is powerful but demanding: version ordering, state migration, and rollback planning all need care.
Beginners should deploy with restarts. Ship a new release, stop the old one, start the new one, and keep hot upgrades as a later study topic.
Next: Capstone: todo CLI
Article author: Arthur Isaev