1. Home
  2. Docs
  3. Kurikulum NodeJS Backend Development with Adonis
  4. Pekan 4 – Materi
  5. Hari 19 – Deploy Adonis ke Heroku

Hari 19 – Deploy Adonis ke Heroku

Deploy Aplikasi Adonis ke Heroku

Prerequisites (Syarat)

  1. Akun Heroku
    Jika belum memiliki akun heroku silakan mendaftar terlebih dahulu di link berikut https://signup.heroku.com/
  2. Git
    Pastikan di pc/laptop kalian sudah terinstall Git.  
  3. Heroku CLI
    Heroku CLI digunakan untuk mengakses app yang kita miliki di heroku melalui terminal/cmd. Link instalasi di halaman berikut https://devcenter.heroku.com/articles/heroku-cli
  4. Nodejs
  5. Aplikasi Adonis

Langkah 0 : Login & Setup Heroku

Jika sudah terinstall heroku CLI maka kalian bisa melakukan login melalui terminal dengan memberikan perintah 

heroku login

Buatlah app baru di dashboard heroku pada browser kalian. Klik tombol New lalu pilih “Create new App”. Nama App harus akan divalidasi dan harus unik terhadap semua App heroku lainnya.

Setelah itu kembali ke Terminal, arahkan ke project Adonis kalian dan pastikan project tersebut sudah terhubung terpasang Git. Lalu set project Adonis kalian agar memiliki alamat remote repository di cloud Heroku dengan perintah berikut

heroku git:remote -a {HEROKU-APPLICATION-NAME}

Catatan: Jika project kalian menggunakan Github, maka pada menu settings untuk App di Heroku akan tersedia menu untuk deploy otomatis menggunakan Github. Maka langkah di atas tidak usah dilakukan.

Langkah 1 : Mengubah package.json

Tambahkanlah variabel “engines” berikut ke dalam file package.json di project Adonis kalian. Untuk Adonis v5, pastikan versi node minimum yang digunakan sudah support untuk Typescript. Pada saat tutorial ini dibuat, dipilih versi node yang LTS yaitu

"engines": {
    "node": "14.16.1"
}

scripts

masih di file package.json, ubahlah property scripts yang sudah ada menjadi seperti di bawah ini (Copy paste).

 "scripts": {
    "build": "node ace build --prod",
    "start": "node ace serve --watch",
    "start:prod": "node ./build/server.js"
  }

Langkah 2 : Membuat Procfile

Procfile adalah file yang menjelaskan bagaimana heroku menjalankan aplikasi Adonis kita. Buatlah file baru dengan nama “Procfile” tanpa file extension apa pun. Lalu copy paste code di bawah ini

release: ENV_SILENT=true node build/ace migration:run --force && node build/ace db:seed 
web: npm run start:prod

terdapat dua perintah yaitu release dan web. Perintah release yaitu perintah untuk menjalankan migration dan seeding database. Hal ini diperlukan untuk membuat database production kita dan mengisi nya dengan seeding (jika ada). Sedangkan perintah web akan menjalankan scripts yang sebelumnya kita definisikan di package.json yaitu “start:prod”. Perintah tersebut selanjutnya akan menjalankan file server kita yang berada di build/server.js .

Langkah 3 : Setting Database

Install add-on Heroku Postgres

Untuk pemilihan database , kita bisa menambahkan add-ons pada aplikasi Heroku. Kita akan memilih add-ons “Heroku Postgres” karena terdapat fitur database yang free yaitu (Hobby Dev – Free) tanpa kita harus memasukkan credit card ke Heroku.

Catatan: Konfigurasi kembali project Adonis kalian dengan menginstall modul yang diperlukan untuk database postgres. Cek di dokumentasi Adonis berikut ini : https://preview.adonisjs.com/guides/database/setup#configure-postgresql

Pada tab “overview” di dashboard app Heroku akan tersedia link untuk database Heroku Postgres. klik menu tersebut lalu kalian akan diarahkan ke halaman database.

Pada halaman database, buka tab “settings” lalu klik tombol “View Credentials” maka kita akan mendapat data Host, nama Database, User, Password, Port dll.

Jika sudah berhasil menginstall module postgres pada project Adonis kita, maka akan terdapat variabel-variabel baru untuk database postgres di file .env . Isilah variabel-variabel .env tersebut sesuai dengan database credentials seperti gambar di atas. Sesuaikan semua data contohnya Host untuk PG_HOST, nama database untuk PG_DB_NAME, dst.

Konfigurasi ulang config/database.ts

Pada file database.ts yang ada di folder config. Import terlebih dahulu module Application seperti berikut

import Application from '@ioc:Adonis/Core/Application'

lalu di bagian property “connection” ubahlah default menjadi kode berikut

connection: Application.inDev ? ‘mysql’ : ‘pg’ 

Konfigurasi di atas berarti kita akan menggunakan koneksi mysql jika Aplikasi berada di tahap development (Dev), jika tidak di development (production) maka akan memilih pg .

Langkah 4 Perintah Deploy

Sebelum Deploy, kita harus mengisi terlebih dahulu Config Vars pada dashboard app Heroku dengan data sesuai dengan variabel yang ada di file .env kita. Menu Config Vars dapat kalian temukan di dasbord App -> Settings -> Tombol Reveal Config Vars.

Masukkan Variabel PORT, HOST, dll yang ada di file .env kalian ke dalam config vars tersebut (untuk port pilih 80).

Let’s Deploy

Berikut ini salah satu contoh untuk men-deploy aplikasi Adonis kita. Perintah add, commit dan push adalah perintah Git biasa untuk meng-upload perubahan ke remote repository kita di Gitlab atau Github atau lainnya. Terdapat perintah tambahan yaitu “git push heroku” yang akan mengupload code kita, lalu membuat folder build untuk production, dan kemudian di-hosting di domain heroku.

git add . 
git commit -m "initial commit"
git push -u origin master
git push heroku master