Setelah sekian lama tidak aktif untuk menulis artikel, akhirnya hari ini penulis menyempatkan waktu untuk menulis artikel baru :D. Pada artikel ini, penulis akan membahas mengenai bagaimana teknik deployment docker pada heroku. Secara default, heroku sebenarnya mendukung deploment untuk docker akan tetapi hanya sedikit artikel dan tutorial mengenai deployment pada heroku.
Mungkin ada yang bertanya, mengapa kita menggunakan heroku untuk melakukan deployment docker ? sebenarnya untuk melakukan deployment docker dapat menggunakan provider lain misalnya google cloud, akan tetapi google cloud mewajibkan kita menggunakan kartu kredit untuk menggunakan versi free :(, untuk mengatasi hal tersebut, kita dapat menggunakan heroku :D. Proses deployment ini juga penulis gunakan untuk deployment aplikasi - aplikasi microservice yang penulis bangun untuk kebutuhan tesis :), jadi dapat dipastikan bahwa deployment docker pada heroku merupakan alternative yang tepat bagi developer yang ingin mencoba teknologi docker.
Setup Project Spring Boot
Pada artikel ini, penulis akan membuat sebuah project spring boot dengan bahasa pemrograman kotlin yang nantinya akan di deploy ke container. Silahkan akses start.spring.io, lalu isi seperti berikut.
Silahkan download lalu extract project tersebut dan import ke dalam IDE Intellij IDEA. Lalu silahkan buka file build.gradle dan ubah menjadi seperti berikut.
Dapat dilihat pada bagian berikut.
merupakan konfigurasi plugin docker pada gradle yang nantinya kita gunakan untuk melakukan proses pembuatan image. rizkimufrizal adalah nama dari account docker hub. Langkah selanjutnya silahkan buka file application.properties di dalam folder src/main/resources lalu ubah konfigurasinya menjadi seperti berikut.
${DATABASE_URL} merupakan variabel yang ada pada heroku, variabel ini nantinya kita gunakan untuk mengambil url database. Lalu silahkan buat sebuah package configuration di dalam package org.rizki.mufrizal.heroku.container lalu buatlah sebuah class kotlin DataSourceConfiguration untuk keperluan konfigurasi datasource, dan ubah codingan nya seperti berikut.
Langkah selanjutnya silahkan buat package domain pada package org.rizki.mufrizal.heroku.container lalu buat sebuah class kotlin dengan nama Barang lalu masukkan codingan seperti berikut.
Setelah selesai silahkan buat package repository di dalam package org.rizki.mufrizal.heroku.container lalu buat sebuah class kotlin dengan nama BarangRepostory lalu ubah codingan menjadi seperti berikut.
Lalu ubah main class HerokuContainerApplication menjadi seperti berikut.
Langkah selanjutnya silahkan buat file Dockerfile pada root project lalu tambahkan codingan berikut.
Setelah selesai, selanjutnya kita akan membuat image berdasarkan project tersebut, silahkan jalankan command berikut untuk login ke docker hub.
Setelah selesai login, lalu jalankan perintah gradle berikut.
Jika telah selesai, maka anda dapat melihat image anda telah tersedia di docker hub seperti berikut.
Deploy Docker Container Ke Heroku
Silahkan buat sebuah folder di dalam root project dengan nama heroku-docker lalu buat sebuah file Dockerfile di dalamnya dan tambahkan konfigurasi docker seperti berikut.
Container yang ada pada heroku wajib menggunakan perintah CMD untuk menjalankan service nya, dikarenakan ini adalah project java maka penulis menggunakan command java untuk menjalankan aplikasi web tersebut. -Xmx300m -Xss512k merupakan perintah untuk membatasi penggunaan memory dikarenakan memory untuk heroku versi gratis dibatasi hanya sampai 512 MB.
Silahkan login pada web heroku di https://dashboard.heroku.com, lalu buat sebuah aplikasi dengan nama heroku-docker, untuk nama silahkan gunakan nama yang anda inginkan. Setelah selesai, silahkan masuk ke dalam detail aplikasi tersebut lalu pilih menu resources, lalu pada bagian add-ons silahkan ketika postgres maka akan muncul seperti berikut.
Nantinya akan muncul seperti gambar berikut dan pilih provision
Nantinya akan muncul seperti berikut.
Lalu silahkan akses folder heroku-docker melalui terminal lalu jalankan perintah berikut untuk melakukan login ke heroku.
silahkan isikan email dan password anda, lalu login ke registry docker heroku dengan perintah
Kemudian untuk melakukan deploy ke heroku, silakan jalankan perintah berikut. Perintah berikut menggunakan heroku-cli, silahkan lihat cara instalasi heroku-cli di heroku-cli.
heroku-docker silahkan gunakan nama aplikasi yang anda buat di heroku. Jika berhasil maka akan muncul output seperti berikut pada terminal anda.
Test REST API Spring Boot
Untuk melakukan test terhadap REST API yang telah kita bangun, silahkan jalankan command berikut untuk melakukan proses save data.
Lalu silahkan akses data dengan command berikut
Untuk mematikan container pada heroku, anda dapat melakukan scale down menjadi 0 dengan perintah
Bagi anda yang ingin melihat source code codingan, silahkan lihat di Heroku-Container. Sekian artikel mengenai Belajar Deployment Docker Pada Heroku dan terima kasih :).