Pasangkan Cloud Run dengan Firebase Hosting untuk membuat dan menayangkan konten dinamis Anda atau bangun 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 meningkatkan skala image container secara otomatis dan horizontal untuk menangani permintaan yang diterima, lalu menurunkan skala saat permintaan berkurang.
- Anda hanya membayar untuk CPU, memori, dan jaringan yang terpakai selama penanganan permintaan.
Untuk melihat kasus penggunaan dan contoh integrasi Cloud Run dengan Firebase Hosting, lihat ringkasan serverless.
Panduan ini menunjukkan cara:
- Menulis aplikasi Halo Dunia sederhana
- Memasukkan aplikasi ke dalam container dan menguploadnya ke Artifact 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, Anda perlu menyelesaikan beberapa tugas awal,
termasuk menyiapkan akun Cloud Billing, 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 Cloud Billing yang terkait 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 di 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
Perhatikan bahwa Cloud Run mendukung banyak bahasa lain selain bahasa 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 selesai dan siap dimasukkan ke dalam container serta diupload ke Artifact 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 selesai dan siap dimasukkan ke dalam container serta diupload ke Artifact 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 selesai dan siap dimasukkan ke dalam container serta diupload ke Artifact 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 console, 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 selesai dan siap dimasukkan ke dalam container serta diupload ke Artifact Registry.
Langkah 2: Masukkan aplikasi ke dalam container dan upload ke Artifact 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 berisi 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 Artifact 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
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 memiliki Firebase CLI versi terbaru.
Anda telah melakukan inisialisasi Firebase Hosting.
Untuk mendapatkan petunjuk mendetail tentang cara menginstal CLI dan melakukan inisialisasi Hosting, lihat Panduan Memulai untuk 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 mendetail, buka dokumentasi Cloud Run.
Langkah berikutnya
Siapkan caching untuk konten dinamis Anda di CDN global.
Coba 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.