Pasangkan Cloud Run dengan Firebase Hosting untuk membuat dan menayangkan konten dinamis Anda atau membangun REST API sebagai microservice.
Dengan menggunakan Cloud Run, Anda dapat men-deploy aplikasi yang dikemas dalam image container. Selanjutnya, dengan menggunakan Firebase Hosting, Anda dapat mengarahkan permintaan HTTPS untuk memicu aplikasi dalam container.
- Cloud Run mendukung sejumlah bahasa (termasuk Go, Node.js, Python, dan Java), sehingga Anda leluasa menggunakan bahasa pemrograman dan framework pilihan Anda.
- Cloud Run menskalakan image container secara otomatis dan horizontal untuk menangani permintaan yang diterima, lalu memperkecil skala saat permintaan berkurang.
- Anda hanya membayar untuk CPU, memori, dan jaringan yang terpakai selama penanganan permintaan.
Untuk melihat contoh kasus penggunaan dan contoh integrasi Cloud Run dengan Firebase Hosting, lihat ringkasan serverless kami.
Panduan ini menunjukkan cara:
- Menulis aplikasi Halo Dunia sederhana
- Memasukkan aplikasi ke dalam container dan menguploadnya ke Container Registry
- Men-deploy image container ke Cloud Run
- Mengarahkan permintaan Hosting ke aplikasi dalam container
Perlu diingat bahwa untuk meningkatkan performa penayangan konten dinamis, Anda juga dapat menyesuaikan setelan cache (opsional).
Sebelum memulai
Sebelum menggunakan Cloud Run, selesaikan beberapa tugas awal, termasuk menyiapkan akun Penagihan Cloud, mengaktifkan Cloud Run API, dan menginstal alat command line gcloud
.
Menyiapkan penagihan untuk project Anda
Cloud Run menawarkan kuota penggunaan gratis, tetapi Anda tetap harus memiliki akun Penagihan Cloud yang dikaitkan dengan project Firebase Anda untuk menggunakan atau mencoba Cloud Run.
Mengaktifkan API dan menginstal SDK
Aktifkan Cloud Run API di konsol API Google:
Buka halaman Cloud Run API di konsol API Google.
Saat diminta, pilih project Firebase Anda.
Klik Enable pada halaman Cloud Run API.
Instal dan lakukan inisialisasi Cloud SDK.
Pastikan bahwa alat
gcloud
dikonfigurasikan untuk project yang tepat:gcloud config list
Langkah 1: Tulis aplikasi contoh
Ingat bahwa Cloud Run mendukung banyak bahasa lain selain yang ditampilkan dalam contoh berikut.
Go
Buat direktori baru bernama
helloworld-go
, lalu pindahlah ke direktori tersebut:mkdir helloworld-go
cd helloworld-go
Buat file baru bernama
helloworld.go
, lalu tambahkan kode berikut:Kode ini menghasilkan server web dasar yang memantau port yang ditentukan oleh variabel lingkungan
PORT
.
Aplikasi Anda sudah jadi dan siap dimasukkan ke dalam container dan diupload ke Container Registry.
Node.js
Buat direktori baru bernama
helloworld-nodejs
, lalu pindahlah ke direktori tersebut:mkdir helloworld-nodejs
cd helloworld-nodejs
Buat file
package.json
dengan konten berikut:Buat file baru bernama
index.js
, lalu tambahkan kode berikut:Kode ini menghasilkan server web dasar yang memantau port yang ditentukan oleh variabel lingkungan
PORT
.
Aplikasi Anda sudah jadi dan siap dimasukkan ke dalam container dan diupload ke Container Registry.
Python
Buat direktori baru bernama
helloworld-python
, lalu pindahlah ke direktori tersebut:mkdir helloworld-python
cd helloworld-python
Buat file baru bernama
app.py
, lalu tambahkan kode berikut:Kode ini menghasilkan server web dasar yang memantau port yang ditentukan oleh variabel lingkungan
PORT
.
Aplikasi Anda sudah jadi dan siap dimasukkan ke dalam container dan diupload ke Container Registry.
Java
Instal JDK untuk Java SE 8 atau yang lebih baru dan CURL.
Perhatikan bahwa kita hanya perlu melakukan langkah ini untuk membuat project web baru pada langkah berikutnya. Dockerfile, yang akan dijelaskan nanti, akan memuat semua dependensi ke dalam container.
Dari konsol, buat project web kosong baru menggunakan perintah cURL dan perintah ekstrak:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
Langkah ini menghasilkan project SpringBoot.
Perbarui class
SpringBootApplication
disrc/main/java/com/example/helloworld/HelloworldApplication.java
dengan menambahkan@RestController
untuk menangani pemetaan/
, serta tambahkan kolom@Value
untuk menyediakan variabel lingkunganTARGET
:Kode ini menghasilkan server web dasar yang memantau port yang ditentukan oleh variabel lingkungan
PORT
.
Aplikasi Anda sudah jadi dan siap dimasukkan ke dalam container dan diupload ke Container Registry.
Langkah 2: Masukkan aplikasi ke dalam container dan upload ke Container Registry
Masukkan aplikasi contoh ke dalam container dengan membuat file baru bernama
Dockerfile
di direktori yang sama dengan file sumbernya. Salin konten berikut ke file Anda.Go
Node.js
Python
Java
Bangun image container Anda menggunakan Cloud Build dengan menjalankan perintah berikut dari direktori yang memuat Dockerfile Anda:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Setelah berhasil, Anda akan melihat pesan SUCCESS yang berisi nama image
(gcr.io/PROJECT_ID/helloworld
).
Image container sekarang disimpan di Container Registry dan dapat digunakan kembali jika diinginkan.
Perhatikan bahwa, sebagai pengganti Cloud Build, Anda dapat menggunakan versi Docker yang diinstal secara lokal untuk membangun container secara lokal.
Langkah 3: Deploy image container ke Cloud Run
Deploy menggunakan perintah berikut:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
Saat diminta:
- Pilih sebuah region (misalnya
us-central1
) - Konfirmasikan nama layanan (misalnya,
helloworld
) - Berikan respons
Y
untuk allow unauthenticated invocations
- Pilih sebuah region (misalnya
Untuk performa terbaik, lakukan kolokasi layanan Cloud Run dengan Hosting menggunakan region berikut:
us-west1
us-central1
us-east1
europe-west1
asia-east1
Penulisan ulang ke Cloud Run dari Hosting didukung di region berikut:
asia-east1
asia-east2
asia-northeast1
asia-northeast2
asia-northeast3
asia-south1
asia-south2
asia-southeast1
asia-southeast2
australia-southeast1
australia-southeast2
europe-central2
europe-north1
europe-southwest1
europe-west1
europe-west12
europe-west2
europe-west3
europe-west4
europe-west6
europe-west8
europe-west9
me-central1
me-west1
northamerica-northeast1
northamerica-northeast2
southamerica-east1
southamerica-west1
us-central1
us-east1
us-east4
us-east5
us-south1
us-west1
us-west2
us-west3
us-west4
us-west1
us-central1
us-east1
europe-west1
asia-east1
Tunggu beberapa saat sampai proses deploy selesai. Jika berhasil, command line akan menampilkan URL layanan. Contoh:
https://helloworld-RANDOM_HASH-us-central1.a.run.app Buka container yang telah di-deploy dengan membuka URL layanan di browser web.
Langkah selanjutnya akan memandu Anda mengakses aplikasi dalam container ini dari URL Firebase Hosting sehingga aplikasi tersebut dapat menghasilkan konten dinamis untuk situs Anda yang dihosting oleh Firebase.
Langkah 4: Arahkan permintaan hosting ke aplikasi dalam container Anda
Dengan aturan penulisan ulang, Anda dapat mengarahkan permintaan yang cocok dengan pola tertentu ke satu tujuan.
Contoh berikut menunjukkan cara mengarahkan semua permintaan dari halaman
/helloworld
di situs Hosting Anda untuk memicu penyiapan dan pengoperasian
instance container helloworld
Anda.
Pastikan bahwa:
Anda menggunakan Firebase CLI versi terbaru.
Anda telah melakukan inisialisasi Firebase Hosting.
Untuk mendapatkan petunjuk terperinci tentang cara menginstal CLI dan melakukan inisialisasi Hosting, lihat Panduan Memulai Hosting.
Buka file
firebase.json
Anda.Tambahkan konfigurasi
rewrite
berikut di bawah bagianhosting
:"hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "/helloworld", "run": { "serviceId": "helloworld", // "service name" (from when you deployed the container image) "region": "us-central1", // optional (if omitted, default is us-central1) "pinTag": true // optional (see note below) } } ] }
Deploy konfigurasi hosting tersebut ke situs Anda dengan menjalankan perintah berikut dari root direktori project Anda:
firebase deploy --only hosting
Container Anda sekarang dapat dijangkau melalui URL berikut:
Subdomain Firebase Anda:
PROJECT_ID.web.app/
danPROJECT_ID.firebaseapp.com/
Semua domain kustom yang terhubung:
CUSTOM_DOMAIN/
Buka halaman konfigurasi Hosting untuk mengetahui penjelasan selengkapnya tentang aturan penulisan ulang. Anda juga dapat mempelajari urutan prioritas respons untuk berbagai konfigurasi Hosting.
Menguji secara lokal
Selama pengembangan, Anda dapat menjalankan dan menguji image container secara lokal. Untuk mendapatkan petunjuk terperinci, kunjungi dokumentasi Cloud Run.
Langkah berikutnya
Siapkan caching untuk konten dinamis Anda di CDN global.
Lakukan interaksi dengan layanan Firebase lainnya menggunakan Firebase Admin SDK.
Pelajari Cloud Run lebih lanjut, termasuk panduan cara kerja terperinci untuk menyiapkan, mengelola, dan mengonfigurasi container.
Tinjau harga serta kuota dan batas untuk Cloud Run.