Thursday

19-06-2025 Vol 19

How to Deploy a Dockerized Node.js App on Google Cloud Run

Cara Deploy Aplikasi Node.js Ter-Dockerisasi di Google Cloud Run (Panduan Lengkap)

Google Cloud Run adalah platform komputasi yang terkelola sepenuhnya yang memungkinkan Anda menjalankan kontainer tanpa server. Ini sangat ideal untuk men-deploy aplikasi web, API, dan layanan backend. Dalam panduan komprehensif ini, kami akan memandu Anda melalui langkah-langkah untuk men-deploy aplikasi Node.js ter-Dockerisasi ke Google Cloud Run. Kami akan mencakup semua yang perlu Anda ketahui, mulai dari menyiapkan lingkungan Anda hingga memantau aplikasi yang telah di-deploy.

Mengapa Google Cloud Run?

Sebelum kita masuk ke detail teknis, mari kita pahami mengapa Google Cloud Run menjadi pilihan yang menarik untuk men-deploy aplikasi Node.js Anda:

  • Serverless: Tidak perlu mengelola server atau infrastruktur. Google Cloud Run menangani penskalaan, patching, dan pemeliharaan.
  • Kontainer: Deploy aplikasi Anda dalam kontainer Docker, memastikan konsistensi di seluruh lingkungan.
  • Penskalaan Otomatis: Google Cloud Run secara otomatis menskalakan aplikasi Anda berdasarkan lalu lintas, sehingga Anda hanya membayar untuk sumber daya yang Anda gunakan.
  • Integrasi: Terintegrasi dengan baik dengan layanan Google Cloud lainnya seperti Cloud SQL, Cloud Storage, dan Pub/Sub.
  • Bayar Sesuai Penggunaan: Hanya bayar untuk waktu CPU, memori, dan jaringan yang benar-benar digunakan aplikasi Anda.
  • Deployment Cepat: Deploy aplikasi Anda dengan cepat dan mudah menggunakan perintah baris perintah atau konsol Google Cloud.

Prasyarat

Sebelum memulai, pastikan Anda memiliki prasyarat berikut:

  1. Akun Google Cloud: Anda memerlukan akun Google Cloud dengan penagihan yang diaktifkan. Jika Anda belum memilikinya, daftar di Google Cloud.
  2. Google Cloud SDK (gcloud): Instal dan inisialisasi Google Cloud SDK di mesin lokal Anda. Ikuti instruksi di Dokumentasi Instalasi Google Cloud SDK.
  3. Docker: Instal Docker di mesin lokal Anda. Anda dapat mengunduhnya dari Situs Web Docker.
  4. Node.js dan npm: Pastikan Anda telah menginstal Node.js dan npm (Node Package Manager) di sistem Anda.

Langkah 1: Membuat Aplikasi Node.js Sederhana

Mari kita mulai dengan membuat aplikasi Node.js sederhana. Jika Anda sudah memiliki aplikasi Node.js, Anda dapat melewati langkah ini.

  1. Buat Direktori Proyek: Buat direktori baru untuk proyek Anda dan pindah ke direktori tersebut.
  2. Inisialisasi Proyek Node.js: Jalankan perintah berikut untuk menginisialisasi proyek Node.js:
  3. npm init -y
  4. Instal Express.js: Instal Express.js, sebuah framework web minimalis untuk Node.js.
  5. npm install express
  6. Buat File index.js: Buat file bernama index.js dengan konten berikut:
  7. const express = require('express');
    const app = express();
    const port = process.env.PORT || 3000;
    
    app.get('/', (req, res) => {
      res.send('Halo dari Google Cloud Run!');
    });
    
    app.listen(port, () => {
      console.log(`Aplikasi mendengarkan di port ${port}`);
    });
  8. Jalankan Aplikasi Secara Lokal: Jalankan aplikasi secara lokal untuk memastikannya berfungsi.
  9. node index.js

    Buka browser web Anda dan kunjungi http://localhost:3000. Anda akan melihat pesan “Halo dari Google Cloud Run!”.

Langkah 2: Dockerisasi Aplikasi Node.js Anda

Sekarang, kita akan membuat Dockerfile untuk mengemas aplikasi Node.js kita ke dalam sebuah kontainer.

  1. Buat File Dockerfile: Buat file bernama Dockerfile di direktori proyek Anda dengan konten berikut:
  2. # Gunakan image Node.js resmi sebagai base image
    FROM node:16-alpine
    
    # Tetapkan direktori kerja di dalam kontainer
    WORKDIR /app
    
    # Salin file package.json dan package-lock.json (jika ada)
    COPY package*.json ./
    
    # Instal dependensi
    RUN npm install
    
    # Salin kode sumber aplikasi
    COPY . .
    
    # Buka port yang digunakan oleh aplikasi
    EXPOSE 3000
    
    # Definisikan perintah untuk menjalankan aplikasi
    CMD [ "node", "index.js" ]

    Penjelasan Dockerfile:

    • FROM node:16-alpine: Menggunakan image Node.js versi 16 berbasis Alpine Linux sebagai base image. Alpine Linux kecil dan aman.
    • WORKDIR /app: Menetapkan direktori kerja di dalam kontainer.
    • COPY package*.json ./: Menyalin file package.json dan package-lock.json (jika ada) ke dalam kontainer.
    • RUN npm install: Menginstal dependensi aplikasi.
    • COPY . .: Menyalin semua kode sumber aplikasi ke dalam kontainer.
    • EXPOSE 3000: Membuka port 3000, yang digunakan oleh aplikasi Node.js.
    • CMD [ "node", "index.js" ]: Menentukan perintah untuk menjalankan aplikasi saat kontainer dimulai.
  3. Buat File .dockerignore (Opsional): Buat file bernama .dockerignore untuk mengecualikan file dan direktori yang tidak perlu dari image Docker. Ini dapat mengurangi ukuran image dan mempercepat proses build. Contoh file .dockerignore:
  4. node_modules
    .git
    .gitignore
  5. Bangun Image Docker: Bangun image Docker menggunakan perintah berikut (ganti [NAMA_IMAGE] dengan nama image Anda, contohnya: gcr.io/[ID_PROJECT_GCP]/my-nodejs-app):
  6. docker build -t [NAMA_IMAGE] .
  7. Jalankan Kontainer Secara Lokal (Opsional): Jalankan kontainer secara lokal untuk memastikannya berfungsi sebelum men-deploy ke Google Cloud Run.
  8. docker run -p 3000:3000 [NAMA_IMAGE]

    Buka browser web Anda dan kunjungi http://localhost:3000. Anda akan melihat pesan “Halo dari Google Cloud Run!”.

Langkah 3: Mendorong Image Docker ke Container Registry

Sebelum Anda dapat men-deploy aplikasi ke Google Cloud Run, Anda perlu mendorong image Docker ke Container Registry.

  1. Konfigurasi Docker untuk Menggunakan Google Cloud: Otentikasi Docker dengan Google Cloud menggunakan perintah berikut:
  2. gcloud auth configure-docker
  3. Tag Image Docker: Tag image Docker Anda dengan nama registry. Ganti [ID_PROJECT_GCP] dengan ID proyek Google Cloud Anda dan [NAMA_IMAGE] dengan nama image Anda yang telah dibuat sebelumnya.
  4. docker tag [NAMA_IMAGE] gcr.io/[ID_PROJECT_GCP]/[NAMA_IMAGE]
  5. Dorong Image Docker ke Container Registry: Dorong image Docker ke Container Registry menggunakan perintah berikut:
  6. docker push gcr.io/[ID_PROJECT_GCP]/[NAMA_IMAGE]

Langkah 4: Men-deploy Aplikasi ke Google Cloud Run

Sekarang kita siap untuk men-deploy aplikasi ke Google Cloud Run.

  1. Deploy Layanan Google Cloud Run: Deploy layanan Google Cloud Run menggunakan perintah berikut. Ganti [NAMA_LAYANAN] dengan nama layanan Anda (misalnya, my-nodejs-service), [ID_PROJECT_GCP] dengan ID proyek Google Cloud Anda, dan [NAMA_IMAGE] dengan nama image Anda.
  2. gcloud run deploy [NAMA_LAYANAN] \
        --image gcr.io/[ID_PROJECT_GCP]/[NAMA_IMAGE] \
        --platform managed \
        --region us-central1 \
        --allow-unauthenticated

    Penjelasan Parameter:

    • [NAMA_LAYANAN]: Nama layanan Google Cloud Run Anda.
    • --image gcr.io/[ID_PROJECT_GCP]/[NAMA_IMAGE]: Jalur ke image Docker Anda di Container Registry.
    • --platform managed: Menentukan bahwa Anda menggunakan platform yang dikelola sepenuhnya oleh Google Cloud Run.
    • --region us-central1: Menentukan wilayah tempat layanan Anda akan di-deploy. Ubah ini sesuai dengan kebutuhan Anda.
    • --allow-unauthenticated: Mengizinkan akses tanpa autentikasi ke layanan Anda. Hapus ini jika Anda membutuhkan autentikasi.
  3. Konfirmasi Deployment: Setelah Anda menjalankan perintah gcloud run deploy, Anda akan diminta untuk mengonfirmasi beberapa opsi konfigurasi. Tinjau opsi tersebut dengan cermat dan konfirmasikan deployment.
  4. Dapatkan URL Layanan: Setelah deployment berhasil, Google Cloud Run akan memberikan URL layanan. Kunjungi URL ini di browser web Anda untuk mengakses aplikasi Anda.

Langkah 5: Mengonfigurasi Variabel Lingkungan (Opsional)

Seringkali, aplikasi Anda memerlukan variabel lingkungan untuk mengonfigurasi perilakunya (misalnya, kunci API, string koneksi database). Anda dapat mengonfigurasi variabel lingkungan di Google Cloud Run menggunakan perintah gcloud atau konsol Google Cloud.

  1. Menggunakan Perintah gcloud: Untuk mengatur variabel lingkungan menggunakan perintah gcloud, gunakan opsi --set-env-vars saat men-deploy atau memperbarui layanan Anda. Ganti [NAMA_LAYANAN] dengan nama layanan Anda, [VARIABEL_1] dengan nama variabel lingkungan pertama, dan [NILAI_1] dengan nilainya, dan seterusnya.
  2. gcloud run deploy [NAMA_LAYANAN] \
        --image gcr.io/[ID_PROJECT_GCP]/[NAMA_IMAGE] \
        --platform managed \
        --region us-central1 \
        --allow-unauthenticated \
        --set-env-vars VARIABEL_1=NILAI_1,VARIABEL_2=NILAI_2
  3. Menggunakan Konsol Google Cloud:
    • Buka Konsol Google Cloud dan navigasikan ke Google Cloud Run.
    • Pilih layanan Anda.
    • Klik “Edit & Deploy New Revision”.
    • Buka bagian “Variables & Secrets”.
    • Tambahkan atau edit variabel lingkungan sesuai kebutuhan.
    • Klik “Deploy”.

Di dalam kode Node.js Anda, Anda dapat mengakses variabel lingkungan ini menggunakan process.env.[NAMA_VARIABEL].

Langkah 6: Mengelola Skala dan Sumber Daya

Google Cloud Run secara otomatis menskalakan aplikasi Anda berdasarkan lalu lintas. Namun, Anda dapat mengonfigurasi batas skala dan sumber daya untuk mengontrol perilaku aplikasi Anda.

  1. Batas Jumlah Instans: Anda dapat menetapkan jumlah minimum dan maksimum instans yang dapat diskalakan oleh Google Cloud Run. Ini membantu Anda mengontrol biaya dan memastikan ketersediaan.
  2. Alokasi CPU dan Memori: Anda dapat mengonfigurasi jumlah CPU dan memori yang dialokasikan untuk setiap instans aplikasi Anda. Ini memengaruhi performa dan biaya.

Anda dapat mengonfigurasi pengaturan ini menggunakan perintah gcloud atau konsol Google Cloud.

  1. Menggunakan Perintah gcloud: Gunakan opsi --min-instances dan --max-instances untuk mengatur batas jumlah instans. Gunakan opsi --memory dan --cpu untuk mengonfigurasi alokasi sumber daya. Ganti [NAMA_LAYANAN] dengan nama layanan Anda, [JUMLAH_MIN] dengan jumlah minimum instans, [JUMLAH_MAX] dengan jumlah maksimum instans, [MEMORI] dengan jumlah memori (misalnya, 512Mi), dan [CPU] dengan jumlah CPU (misalnya, 1).
  2. gcloud run deploy [NAMA_LAYANAN] \
        --image gcr.io/[ID_PROJECT_GCP]/[NAMA_IMAGE] \
        --platform managed \
        --region us-central1 \
        --allow-unauthenticated \
        --min-instances [JUMLAH_MIN] \
        --max-instances [JUMLAH_MAX] \
        --memory [MEMORI] \
        --cpu [CPU]
  3. Menggunakan Konsol Google Cloud:
    • Buka Konsol Google Cloud dan navigasikan ke Google Cloud Run.
    • Pilih layanan Anda.
    • Klik “Edit & Deploy New Revision”.
    • Buka bagian “Scaling”.
    • Konfigurasi jumlah minimum dan maksimum instans.
    • Buka bagian “Container”.
    • Konfigurasi alokasi memori dan CPU.
    • Klik “Deploy”.

Langkah 7: Memantau dan Melog

Memantau dan melog adalah hal penting untuk memastikan aplikasi Anda berfungsi dengan baik di Google Cloud Run.

  1. Cloud Logging: Google Cloud Run secara otomatis mengintegrasikan dengan Cloud Logging, yang menyediakan log terpusat untuk aplikasi Anda. Anda dapat menggunakan Cloud Logging untuk melihat log aplikasi, melakukan debug masalah, dan memantau performa.
  2. Cloud Monitoring: Google Cloud Run juga mengintegrasikan dengan Cloud Monitoring, yang menyediakan metrik dan dasbor untuk memantau performa aplikasi Anda. Anda dapat menggunakan Cloud Monitoring untuk melacak penggunaan CPU, penggunaan memori, latensi, dan metrik lainnya.

Anda dapat mengakses Cloud Logging dan Cloud Monitoring di Konsol Google Cloud.

Praktik Terbaik Tambahan

Berikut beberapa praktik terbaik tambahan untuk men-deploy aplikasi Node.js ter-Dockerisasi di Google Cloud Run:

  • Gunakan Image Docker Ringan: Gunakan image Docker yang ringan untuk mengurangi ukuran image dan mempercepat waktu deployment. Image Node.js berbasis Alpine Linux adalah pilihan yang baik.
  • Optimalkan Dockerfile Anda: Optimalkan Dockerfile Anda dengan menggunakan multi-stage builds, menyimpan cache layer, dan menghapus file yang tidak perlu.
  • Konfigurasi Pemeriksaan Kesehatan: Konfigurasi pemeriksaan kesehatan untuk memastikan bahwa Google Cloud Run dapat mendeteksi dan mengganti instans yang tidak sehat.
  • Gunakan Variabel Lingkungan: Gunakan variabel lingkungan untuk mengonfigurasi aplikasi Anda dan menghindari hardcoding kredensial sensitif ke dalam kode Anda.
  • Gunakan Secret Manager: Jika Anda perlu menyimpan kredensial sensitif, gunakan Google Cloud Secret Manager untuk mengelola dan mengakses secret secara aman.
  • Konfigurasi CDN: Gunakan Content Delivery Network (CDN) untuk menyimpan aset statis aplikasi Anda dan meningkatkan performa.
  • Terapkan Logging dan Monitoring: Terapkan logging dan monitoring yang komprehensif untuk melacak performa aplikasi Anda dan mendeteksi masalah.
  • Otomatiskan Deployment: Gunakan alat Continuous Integration/Continuous Deployment (CI/CD) untuk mengotomatiskan proses deployment Anda.

Pemecahan Masalah Umum

Berikut beberapa masalah umum yang mungkin Anda hadapi saat men-deploy aplikasi Node.js ter-Dockerisasi di Google Cloud Run dan cara mengatasinya:

  • Deployment Gagal:
    • Penyebab: Masalah dengan Dockerfile, masalah konektivitas jaringan, atau masalah dengan izin.
    • Solusi: Periksa Dockerfile Anda untuk kesalahan, pastikan Anda memiliki koneksi jaringan yang stabil, dan verifikasi bahwa Anda memiliki izin yang diperlukan untuk men-deploy ke Google Cloud Run. Periksa log deployment di Konsol Google Cloud untuk informasi lebih lanjut.
  • Aplikasi Tidak Dapat Diakses:
    • Penyebab: Aplikasi tidak mendengarkan di port yang benar, aturan firewall salah konfigurasi, atau masalah dengan konfigurasi jaringan.
    • Solusi: Pastikan aplikasi Anda mendengarkan di port yang ditentukan dalam Dockerfile dan di Google Cloud Run. Periksa aturan firewall dan verifikasi bahwa konfigurasi jaringan Anda benar. Pastikan Anda telah menetapkan `–allow-unauthenticated` jika Anda tidak menggunakan autentikasi.
  • Aplikasi Terjadi Error:
    • Penyebab: Bug dalam kode, masalah dengan dependensi, atau masalah sumber daya.
    • Solusi: Periksa log aplikasi di Cloud Logging untuk kesalahan. Pastikan dependensi Anda terinstal dengan benar dan bahwa aplikasi Anda memiliki sumber daya yang cukup (CPU, memori).
  • Penskalaan Lambat:
    • Penyebab: Batas jumlah instans terlalu rendah, aplikasi membutuhkan waktu lama untuk memulai, atau masalah dengan konfigurasi penskalaan otomatis.
    • Solusi: Tingkatkan batas jumlah instans, optimalkan waktu startup aplikasi, dan periksa konfigurasi penskalaan otomatis Anda.

Kesimpulan

Dalam panduan komprehensif ini, kami telah memandu Anda melalui langkah-langkah untuk men-deploy aplikasi Node.js ter-Dockerisasi ke Google Cloud Run. Kami telah mencakup semuanya mulai dari menyiapkan lingkungan Anda hingga memantau aplikasi yang telah di-deploy. Dengan mengikuti langkah-langkah ini, Anda dapat dengan mudah men-deploy dan mengelola aplikasi Node.js Anda di Google Cloud Run dan memanfaatkan manfaat platform serverless ini.

Google Cloud Run menawarkan cara yang sederhana dan efektif untuk men-deploy aplikasi berbasis kontainer tanpa mengkhawatirkan infrastruktur yang mendasarinya. Dengan Dockerisasi aplikasi Node.js Anda, Anda memastikan konsistensi di seluruh lingkungan dan memanfaatkan penskalaan otomatis dan fitur bayar sesuai penggunaan dari Google Cloud Run. Kami harap panduan ini bermanfaat dan memberikan Anda kepercayaan diri untuk mulai men-deploy aplikasi Node.js Anda ke Google Cloud Run hari ini!

“`

omcoding

Leave a Reply

Your email address will not be published. Required fields are marked *