Teknik Multi Stage Build

Berikut adalah review untuk membuat Docker Image dari aplikasi GoLang. Pada sesi ini, akan dibuat sebuah docker image yang berisi aplikasi web sederhana menggunakan aplikasi GoLang.

  1. Pastikan sudah mendownload framework gin dengan instruksi:
    • go get -u github.com/gin-gonic/gin
  2. Buat sebuah folder proyek dan buat file main.go dengan syntax seperti berikut:Teknik Multi Stage Build
  3. Setelah dibuat file main.go, jalankan instruksi berikut
    • go mod init <nama_project>, untuk membuat file go.mod yang berisi informasi library pada proyek.
    • go mod tidy, untuk link dengan library gin yang digunakan pada file main.go
  4. Kemudian test aplikasi dengan perintah go run main.go
  5. Lalu buka browser dan masukkan url: http://localhost:3000/ping untuk
  6. memastikan web server telah berjalan.
  7. Keluarannya adalah halaman web seperti pada gambar berikut:Teknik Multi Stage Build

Membuat Dockerfile
  1. Selanjutnya, buat sebuah file Dockerfile yang berisi langkah-langkah konfigurasi untuk membuat sebuah docker image. Syntaks nya adalah sebagai berikut:Teknik Multi Stage Build
  2. Setelah membuat file Dockerfile di dalam folder proyek, pada OS Windows, pastikan aplikasi Docker Desktop telah di jalankan.
  3. Lalu jalankan perintah berikut untuk membuat docker image: docker build –t go-dock .
  4. Lalu jalankan perintah docker images untuk melihat image go-dock yang telah dibuat.Teknik Multi Stage Build

Menguji Docker Image
  1. Jalankan instruksi docker run –p 3000:3000 go-dock untuk menjalankan image aplikasi GoLang yang telah dibuat. Lalu gunakan browser untuk mengakses url: http://localhost:3000/ping. Keluarannya akan menjadi seperti pada halaman berikut:Teknik Multi Stage Build
  2. Jika keluar tampilan seperti di atas, berarti docker image untuk aplikasi GoLang telah berhasil di buat.

Mengecek Ukuran Docker Image
  1. Perhatikan gambar berikut:Teknik Multi Stage Build
  2. Terlihat bahwa ukuran image yang dihasilkan adalah sebesar 456MB. Hal ini karena images yang dibuat turut memasukkan artefak atau footprint proses kompilasi GoLang.

Fitur Multi-Stage Docker
  1. Docker image juga dikenal dengan kemampuannya untuk menghasilkan image dengan ukuran yang kecil.
  2. Sehingga ukuran image dari aplikasi sebelumnya terhitung masih cukup besar.
  3. Untuk mengoptimalkan ukuran image, Docker menyediakan fitur multi-stage builds.
  4. Dengan fitur multi-stage, kita dapat membuat image yang melalui lebih dari satu tahap (umumnya dua tahap).
    • Tahap pertama untuk build dan instalasi aplikasi
    • Tahap kedua untuk menghilangkan footprint atau artefak yang tidak diperlukan
  5. Untuk mengaktifkan fitur Multi-Stage, cukup menggunakan banyak statement FROM di dalam file Dockerfile.
  6. Setiap statement FROM bisa memiliki base yang berbeda dan masing-masing FROM menandakan sebuat stage yang baru dalam proses build.
  7. Sebagai contoh, modifikasi file Dockerfile sebelumnya dengan mengganti sintaks menjadi seperti pada gambar:Teknik Multi Stage Build

Fitur Multi-Stage Docker
  1. Lalu build kembali image docker dengan perintah: docker build –t go-dock . Setelah itu, jalankan kembali instruksi docker images dan hasilnya adalah seperti pada gambar berikut:Teknik Multi Stage Build
  2. Terlihat bahwa image go-dock yang terbaru, memiliki ukuran yang lebih kecil (sekitar 10MB).
  3. Bila perintah docker run –p 3000:3000 go-dock kembali di jalankan, aplikasi tetap dapat berjalan seperti yang seharusnya.