Deployment/Release Dasar (mix release)
Penjelasan
mix release adalah tool bawaan Elixir (berbasis library Distillery lama yang kini terintegrasi) untuk membungkus aplikasi beserta runtime Erlang yang dibutuhkan menjadi satu paket self-contained, sehingga server production tidak perlu menginstal Elixir sama sekali, cukup menjalankan binary hasil release. Sebelum build release, environment variabel penting seperti SECRET_KEY_BASE dan DATABASE_URL harus disiapkan, biasanya lewat runtime.exs yang membaca System.get_env di runtime, bukan compile time. Proses build release memakai MIX_ENV=prod mix release, hasilnya berupa folder _build/prod/rel/nama_app berisi script bin/nama_app yang mendukung perintah seperti start, stop, dan eval untuk migration. Ini pola deployment idiomatis Elixir yang lebih ringan dibanding menjalankan mix phx.server langsung di production.
Contoh Konsep
# Build assets terlebih dahulu untuk production
mix assets.deploy
# Build release production
MIX_ENV=prod mix release
# Jalankan migration lewat release (tanpa perlu mix)
_build/prod/rel/toko_app/bin/toko_app eval "TokoApp.Release.migrate()"
# Menjalankan aplikasi
_build/prod/rel/toko_app/bin/toko_app start
Praktikum
Susun urutan perintah untuk mem-build dan menjalankan release production blog_app, termasuk migration.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Selalu definisikan modul Release kecil berisi fungsi migrate/0 yang menjalankan Ecto.Migrator, karena binary release tidak punya akses ke task mix seperti ecto.migrate.