Manajemen Proses

Adi Purnama

Adi Purnama

Dokku menggunakan `Procfile` untuk mendefinisikan proses-proses yang ada untuk suatu aplikasi. Kalau pernah pakai Heroku, pasti udah familiar dengan file yang satu ini.

Isinya terdiri dari 2 hal:

  1. nama proses, contohnya `web`, `worker`
  2. perintah untuk menjalankan proses, Misal, kita punya suatu aplikasi Ruby on Rails. Proses `web` tujuannya untuk menjalankan HTTP server, maka perintahnya adalah `bundle exec rails server`. Sementara, proses `worker` tujuannya untuk menghandle background jobs, sehingga perintahnya adalah `bundle exec sidekiq`.

Berikut contoh Procfile

web: bundle exec rails server
worker: bundle exec sidekiq

Perintah tersebut akan membuat 2 container berbeda dari 1 image yang sama. Contohnya di Kanyaah, salah satu project saya.

Ketika deploy aplikasi, proses `web` akan otomatis di-scale menjadi 1. Sementara, untuk proses `worker`, kita harus scale secara manual menggunakan perintah berikut:

dokku ps:scale app-name worker=1

# bisa juga langsung banyak proses
dokku ps:scale app-name web=1 worker=1

Beberapa command lain yang perlu diketahui untuk mengatur proses aplikasi:

  1. `dokku ps:rebuild app-name` untuk build ulang aplikasi dari Docker image yang ada.
  2. `dokku ps:start app-name` untuk start aplikasi
  3. `dokku ps:stop app-name` untuk stop aplikasi, sehingga akan muncul error 502 Bad Gateway.
  4. `dokku ps:restart` untuk memulai ulang aplikasi.
  5. `dokku ps:scale app-name web=NUM1 worker=NUM2`, untuk menentukan jumlah instance per proses.