Deployment Tools

Adi Purnama
Cukup banyak tools deployment yang open source dan di belakang layar memanfaatkan Docker. Ada Coolify, buatan Andras Bacsai. Ada juga Kamal, buatan Basecamp.
Mari kita bahas Coolify dan Kamal dulu.
Coolify, per saya nulis ini, belakangan cukup populer, dan jadi tools favorit untuk self-hosted deployment. Coolify punya UI-nya sendiri untuk mengatur service dan deployment. Dia juga udah support berbagai jenis deployment: Herokuish, Nixpacks, dan Dockerfile.
Saya sempat mencobanya. Saya merasa kalau UI di Coolify itu cukup kompleks. Jujur aja, saya ngerasa overwhelmed dengan UI nya Coolify, hehe. Dokumentasinya juga menurut saya masih belum terlalu lengkap, dan perlu ditingkatkan lagi.
Ada juga Kamal. Kamal ini nggak ada UI-nya macam Coolify. Dia CLI-based application. Menurut saya, Kamal ini bagus. Setup deployment-nya gampang. Saya hampir pakai Kamal, kalau aja Kamal nggak perlu container registry untuk proses deployment-nya. Pakai container registry berarti nambah cost lagi.
Disamping itu, saya juga belum pernah mencoba buat proof of concept tentang deploy banyak aplikasi di satu server pakai Kamal. Asumsi saya harusnya bisa-bisa aja sih. Perlu baca-baca lagi dokumentasinya.
Nah, yang terakhir, yang menjadi topik utama di buku ini. Dokku. Kalau yang pernah mencoba Heroku, nah, Dokku ini adalah versi open source nya Heroku.
Saya lihat Dokku ini sepertinya belum cukup populer di kalangan tekbro Indo. Padahal menurut saya pribadi, Dokku ini bagus banget. Instalasinya mudah. CLI-based. Pluginnya juga banyak, contohnya: PostgreSQL, MariaDB, MySQL, Redis.
Satu hal lagi yang saya suka adalah, Dokku ini nggak perlu container registry. Cukup push ke server, nanti Dokku akan build image terbaru di server. Cons-nya, semakin sering kita push, semakin bengkak storage di server karena build cache yang menumpuk :)
But it's OK, cache selalu bisa dibersihkan.
Builder
Dokku, sama seperti Coolify, sudah support berbagai builder: Herokuish, Nixpacks, Lambda, Dockerfile, Cloud Native, dan Null Builder. Saya coba tanya Gemini apa perbedaannya, begini hasilnya.
Dokku akan menentukan secara otomatis mau pakai deployment jenis yang mana.
- Dokku akan memakai builder Herokuish secara default, tapi bisa ke-override kalau ada file Dockerfile di root aplikasi. Supaya nggak ke-override, harus setup salah satu dari 2 point ini:
- environment variable `BUILDPACK_URL` di-set untuk aplikasi yang dimaksud, atau
- ada file `.buildpacks` di root aplikasi.
- Dokku akan otomatis memakai builder Nixpacks, kalau ada file `nixpacks.toml` di root aplikasi
- Dokku akan otomatis memakai builder Dockerfile, kalau ada file Dockerfile di root aplikasi
- Dokku akan otomatis memakai builder Lambda, kalau ada file `lambda.yml` di root aplikasiDokku akan otomatis memakai builder Cloud Native, kalau
- environment variable `DOKKU_CNB_EXPERIMENTAL` di-set nilainya menjadi `1`, atau
- ada file `project.tml` di root aplikasi
- Untuk Null builder, ini nggak akan auto-detect, tapi harus set secara manual pakai command `dokku builder:set app-name selected null`