จับคู่ Cloud Run กับ Firebase Hosting เพื่อสร้างและให้บริการเนื้อหาไดนามิกของคุณ หรือสร้าง REST API เป็นไมโครเซอร์วิส
เมื่อใช้ Cloud Run คุณจะปรับใช้แอปพลิเคชันที่แพ็กเกจในคอนเทนเนอร์อิมเมจได้ จากนั้น เมื่อใช้ Firebase Hosting คุณจะส่งคำขอ HTTPS เพื่อทริกเกอร์แอปที่มีคอนเทนเนอร์ได้
- Cloud Run รองรับ หลายภาษา (รวมถึง Go, Node.js, Python และ Java) ทำให้คุณมีความยืดหยุ่นในการใช้ภาษาการเขียนโปรแกรมและเฟรมเวิร์กที่คุณเลือก
- Cloud Run จะปรับขนาดอิมเมจคอนเทนเนอร์ของคุณโดยอัตโนมัติและในแนวนอน เพื่อรองรับคำขอที่ได้รับ จากนั้นจึงปรับขนาดลงเมื่อความต้องการลดลง
- คุณ จะจ่าย เฉพาะ CPU หน่วยความจำ และเครือข่ายที่ใช้ระหว่างการจัดการคำขอเท่านั้น
ตัวอย่างเช่น กรณีการใช้งานและตัวอย่างสำหรับ Cloud Run ที่ผสานรวมกับโฮสติ้ง Firebase โปรดไปที่ ภาพรวมแบบไร้เซิร์ฟเวอร์ ของเรา
คู่มือนี้จะแสดงวิธีการ:
- เขียนแอปพลิเคชัน Hello World ง่ายๆ
- สร้างคอนเทนเนอร์แอปและอัปโหลดไปยัง Container Registry
- ทำให้อิมเมจคอนเทนเนอร์ใช้งานได้กับ Cloud Run
- คำขอโฮสติ้งโดยตรงไปยังแอปคอนเทนเนอร์ของคุณ
โปรดทราบว่าเพื่อปรับปรุงประสิทธิภาพการแสดงเนื้อหาแบบไดนามิก คุณสามารถเลือกปรับแต่ง การตั้งค่าแคช ของคุณได้
ก่อนที่คุณจะเริ่ม
ก่อนที่จะใช้ Cloud Run คุณต้องทำงานเบื้องต้นบางอย่างให้เสร็จสิ้น รวมถึงการตั้งค่าบัญชี Cloud Billing, เปิดใช้ Cloud Run API และติดตั้งเครื่องมือบรรทัดคำสั่ง gcloud
ตั้งค่าการเรียกเก็บเงินสำหรับโครงการของคุณ
Cloud Run เสนอ โควต้าการใช้งานฟรี แต่คุณยังคงต้องมี บัญชีสำหรับการเรียกเก็บเงิน Cloud ที่เชื่อมโยงกับโปรเจ็กต์ Firebase ของคุณเพื่อใช้หรือลองใช้ Cloud Run
เปิดใช้งาน API และติดตั้ง SDK
เปิดใช้งาน Cloud Run API ในคอนโซล Google APIs:
เปิด หน้า Cloud Run API ในคอนโซล Google API
เมื่อได้รับแจ้ง ให้เลือกโปรเจ็กต์ Firebase ของคุณ
คลิก เปิดใช้งาน ในหน้า Cloud Run API
ติดตั้งและเริ่มต้น Cloud SDK
ตรวจสอบว่าเครื่องมือ
gcloud
ได้รับการกำหนดค่าสำหรับโปรเจ็กต์ที่ถูกต้อง:gcloud config list
ขั้นตอนที่ 1 : เขียนแอปพลิเคชันตัวอย่าง
โปรดทราบว่า Cloud Run รองรับ ภาษาอื่นๆ มากมาย นอกเหนือจากภาษาที่แสดงในตัวอย่างต่อไปนี้
ไป
สร้างไดเร็กทอรีใหม่ชื่อ
helloworld-go
จากนั้นเปลี่ยนไดเร็กทอรีเป็น:mkdir helloworld-go
cd helloworld-go
สร้างไฟล์ใหม่ชื่อ
helloworld.go
จากนั้นเพิ่มโค้ดต่อไปนี้:รหัสนี้สร้างเว็บเซิร์ฟเวอร์พื้นฐานที่รับฟังพอร์ตที่กำหนดโดยตัวแปรสภาพแวดล้อม
PORT
แอปของคุณเสร็จสมบูรณ์และพร้อมที่จะบรรจุลงในคอนเทนเนอร์และอัปโหลดไปยัง Container Registry
โหนด js
สร้างไดเร็กทอรีใหม่ชื่อ
helloworld-nodejs
จากนั้นเปลี่ยนไดเร็กทอรีเป็น:mkdir helloworld-nodejs
cd helloworld-nodejs
สร้างไฟล์
package.json
โดยมีเนื้อหาดังต่อไปนี้:สร้างไฟล์ใหม่ชื่อ
index.js
จากนั้นเพิ่มโค้ดต่อไปนี้:รหัสนี้สร้างเว็บเซิร์ฟเวอร์พื้นฐานที่รับฟังพอร์ตที่กำหนดโดยตัวแปรสภาพแวดล้อม
PORT
แอปของคุณเสร็จสมบูรณ์และพร้อมที่จะบรรจุลงในคอนเทนเนอร์และอัปโหลดไปยัง Container Registry
หลาม
สร้างไดเร็กทอรีใหม่ชื่อ
helloworld-python
จากนั้นเปลี่ยนไดเร็กทอรีเป็น:mkdir helloworld-python
cd helloworld-python
สร้างไฟล์ใหม่ชื่อ
app.py
จากนั้นเพิ่มโค้ดต่อไปนี้:รหัสนี้สร้างเว็บเซิร์ฟเวอร์พื้นฐานที่รับฟังพอร์ตที่กำหนดโดยตัวแปรสภาพแวดล้อม
PORT
แอปของคุณเสร็จสมบูรณ์และพร้อมที่จะบรรจุลงในคอนเทนเนอร์และอัปโหลดไปยัง Container Registry
ชวา
ติดตั้ง Java SE 8 หรือใหม่กว่า JDK และ CURL
โปรดทราบว่าเราจำเป็นต้องทำเช่นนี้เพื่อสร้างโครงการเว็บใหม่ในขั้นตอนถัดไป Dockerfile ซึ่งจะอธิบายในภายหลัง จะโหลดการอ้างอิงทั้งหมดลงในคอนเทนเนอร์
จากคอนโซล ให้สร้างโปรเจ็กต์เว็บเปล่าใหม่โดยใช้ cURL จากนั้นแตกไฟล์คำสั่ง:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
สิ่งนี้จะสร้างโปรเจ็กต์ SpringBoot
อัปเดตคลาส
SpringBootApplication
ในsrc/main/java/com/example/helloworld/HelloworldApplication.java
โดยการเพิ่ม@RestController
เพื่อจัดการ/
mapping และเพิ่มฟิลด์@Value
เพื่อจัดเตรียมตัวแปรสภาพแวดล้อมTARGET
:รหัสนี้สร้างเว็บเซิร์ฟเวอร์พื้นฐานที่รับฟังพอร์ตที่กำหนดโดยตัวแปรสภาพแวดล้อม
PORT
แอปของคุณเสร็จสมบูรณ์และพร้อมที่จะบรรจุลงในคอนเทนเนอร์และอัปโหลดไปยัง Container Registry
ขั้นตอนที่ 2 : ทำคอนเทนเนอร์แอปและอัปโหลดไปยัง Container Registry
จัดเก็บแอปตัวอย่างโดยการสร้างไฟล์ใหม่ชื่อ
Dockerfile
ในไดเร็กทอรีเดียวกันกับไฟล์ต้นฉบับ คัดลอกเนื้อหาต่อไปนี้ลงในไฟล์ของคุณไป
โหนด js
หลาม
ชวา
สร้างอิมเมจคอนเทนเนอร์โดยใช้ Cloud Build โดยเรียกใช้คำสั่งต่อไปนี้จากไดเรกทอรีที่มี Dockerfile ของคุณ:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
เมื่อสำเร็จ คุณจะเห็นข้อความ SUCCESS ที่มีชื่อรูปภาพ
(gcr.io/ PROJECT_ID /helloworld
)
ขณะนี้อิมเมจคอนเทนเนอร์ถูกจัดเก็บไว้ใน Container Registry และสามารถนำมาใช้ซ้ำได้หากต้องการ
โปรดทราบว่าแทนที่จะใช้ Cloud Build คุณสามารถใช้ Docker เวอร์ชันที่ติดตั้งในเครื่องเพื่อ สร้างคอนเทนเนอร์ในเครื่องได้
ขั้นตอนที่ 3 : ปรับใช้คอนเทนเนอร์อิมเมจกับ Cloud Run
ปรับใช้โดยใช้คำสั่งต่อไปนี้:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
เมื่อได้รับแจ้ง:
- เลือกภูมิภาค (เช่น
us-central1
) - ยืนยันชื่อบริการ (เช่น
helloworld
) - ตอบกลับ
Y
เพื่อ อนุญาตการเรียกใช้ที่ไม่ได้รับการรับรองความถูกต้อง
- เลือกภูมิภาค (เช่น
เพื่อประสิทธิภาพที่ดีที่สุด ให้จัดตำแหน่งบริการ Cloud Run ของคุณกับโฮสติ้งโดยใช้ภูมิภาคต่อไปนี้:
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
รองรับการเขียนซ้ำไปยัง Cloud Run จาก Hosting ในภูมิภาคต่อไปนี้:
-
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
รอสักครู่เพื่อให้การปรับใช้งานเสร็จสิ้น เมื่อสำเร็จ บรรทัดคำสั่งจะแสดง URL ของบริการ ตัวอย่างเช่น:
https://helloworld- RANDOM_HASH -us-central1.a.run.appเยี่ยมชมคอนเทนเนอร์ที่ใช้งานของคุณโดยเปิด URL ของบริการในเว็บเบราว์เซอร์
ขั้นตอนถัดไปจะอธิบายวิธีเข้าถึงแอปที่มีคอนเทนเนอร์นี้ จาก URL โฮสติ้งของ Firebase เพื่อให้สามารถสร้างเนื้อหาแบบไดนามิกสำหรับไซต์ที่โฮสต์โดย Firebase ได้
ขั้นตอนที่ 4: คำขอโฮสต์โดยตรงไปยังแอปคอนเทนเนอร์ของคุณ
ด้วย กฎการเขียนซ้ำ คุณสามารถส่งคำขอที่ตรงกับรูปแบบเฉพาะไปยังปลายทางเดียวได้
ตัวอย่างต่อไปนี้แสดงวิธีส่งคำขอทั้งหมดจากเพจ /helloworld
บนไซต์โฮสติ้งของคุณเพื่อทริกเกอร์การเริ่มต้นและการทำงานของอินสแตนซ์คอนเทนเนอร์ helloworld
ของคุณ
ทำให้เเน่นอน:
คุณได้เริ่มต้น Firebase Hosting แล้ว
สำหรับคำแนะนำโดยละเอียดเกี่ยวกับการติดตั้ง CLI และการเริ่มต้นโฮสติ้ง โปรดดู คู่มือเริ่มต้นใช้งานโฮสติ้ง
เปิด ไฟล์
firebase.json
ของคุณเพิ่มการกำหนดค่า
rewrite
ต่อไปนี้ในส่วนhosting
:"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) } } ] }
ปรับใช้การกำหนดค่าโฮสติ้งของคุณกับไซต์ของคุณโดยการรันคำสั่งต่อไปนี้จากรากของไดเร็กทอรีโปรเจ็กต์ของคุณ:
firebase deploy --only hosting
ด้วยฟีเจอร์นี้ คุณจะมั่นใจได้ว่าการแก้ไขบริการ Cloud Run ของคุณสำหรับการสร้างเนื้อหาไดนามิกของเว็บไซต์ของคุณจะซิงค์กับทรัพยากรโฮสติ้งแบบคงที่และการกำหนดค่าโฮสติ้งของคุณ นอกจากนี้ ฟีเจอร์นี้ยังช่วยให้คุณดูตัวอย่างการเขียนซ้ำไปยัง Cloud Run บนช่องแสดงตัวอย่างโฮสติ้งได้ด้วย
หากคุณเพิ่ม
"pingTag": true
ลงในrun
block ของการกำหนดค่าhosting.rewrites
ทรัพยากรโฮสติ้งแบบคงที่และการกำหนดค่าของคุณจะถูกปักหมุดไว้ที่บริการ Cloud Run รุ่นปรับปรุงล่าสุด ณ เวลาที่ปรับใช้ หากคุณย้อนกลับเวอร์ชันของเว็บไซต์ การแก้ไขบริการ Cloud Run ที่ "ปักหมุด" ก็จะถูกย้อนกลับด้วยฟีเจอร์นี้อาศัย แท็ก Cloud Run ซึ่งมีขีดจำกัด 1,000 แท็กต่อบริการ และ 2,000 แท็กต่อภูมิภาค ซึ่งหมายความว่าหลังจากการปรับใช้หลายร้อยครั้ง ไซต์เวอร์ชันเก่าที่สุดอาจหยุดทำงาน
ขณะนี้คุณสามารถเข้าถึงคอนเทนเนอร์ของคุณผ่านทาง URL ต่อไปนี้:
โดเมนย่อย Firebase ของคุณ:
PROJECT_ID .web.app/
และPROJECT_ID .firebaseapp.com/
โดเมนแบบกำหนดเอง ที่เชื่อมต่ออยู่:
CUSTOM_DOMAIN /
ไปที่หน้าการกำหนดค่าโฮสติ้งเพื่อดู รายละเอียดเพิ่มเติมเกี่ยวกับกฎการเขียนใหม่ คุณยังสามารถเรียนรู้เกี่ยวกับ ลำดับความสำคัญของการตอบกลับ สำหรับการกำหนดค่าโฮสติ้งต่างๆ
ทดสอบในพื้นที่
ในระหว่างการพัฒนา คุณสามารถเรียกใช้และทดสอบอิมเมจคอนเทนเนอร์ในเครื่องได้ สำหรับคำแนะนำโดยละเอียด โปรดไปที่ เอกสารประกอบของ Cloud Run
ขั้นตอนถัดไป
ตั้งค่าการแคช เนื้อหาไดนามิกของคุณบน CDN ส่วนกลาง
โต้ตอบกับบริการ Firebase อื่นๆ โดยใช้ Firebase Admin SDK
เรียนรู้เพิ่มเติมเกี่ยวกับ Cloud Run รวมถึง คำแนะนำวิธีการตั้งค่า จัดการ และกำหนดค่าคอนเทนเนอร์โดยละเอียด
ตรวจสอบ ราคา โค วต้า และขีดจำกัด ของ Cloud Run