จับคู่ Cloud Run กับ Firebase Hosting เพื่อสร้างและให้บริการเนื้อหาแบบไดนามิกของคุณ หรือสร้าง REST API เป็นไมโครเซอร์วิส
เมื่อใช้ Cloud Run คุณจะปรับใช้แอปพลิเคชันที่จัดแพ็กเกจในอิมเมจคอนเทนเนอร์ได้ จากนั้น เมื่อใช้โฮสติ้งของ Firebase คุณจะส่งคำขอ HTTPS เพื่อทริกเกอร์แอปที่มีคอนเทนเนอร์ได้
- Cloud Run รองรับ หลายภาษา (รวมถึง Go, Node.js, Python และ Java) ให้คุณมีความยืดหยุ่นในการใช้ภาษาการเขียนโปรแกรมและเฟรมเวิร์กที่คุณเลือก
- Cloud Run จะปรับขนาดอิมเมจคอนเทนเนอร์ของคุณโดยอัตโนมัติและในแนวนอน เพื่อจัดการกับคำขอที่ได้รับ จากนั้นจะลดขนาดลงเมื่อความต้องการลดลง
- คุณ จ่าย เฉพาะ CPU หน่วยความจำ และเครือข่ายที่ใช้ระหว่างการจัดการคำขอเท่านั้น
ตัวอย่างเช่น กรณีใช้งานและตัวอย่างสำหรับ Cloud Run ที่ผสานรวมกับ Firebase Hosting ไปที่ ภาพรวมแบบไร้เซิร์ฟเวอร์ ของเรา
คู่มือนี้จะแสดงวิธีการ:
- เขียนโปรแกรม Hello World ง่ายๆ
- Containerize แอปและอัปโหลดไปยัง Container Registry
- ทำให้อิมเมจคอนเทนเนอร์ใช้งานได้กับ Cloud Run
- คำขอโฮสติ้งโดยตรงไปยังแอปคอนเทนเนอร์ของคุณ
โปรดทราบว่าในการปรับปรุงประสิทธิภาพการแสดงเนื้อหาแบบไดนามิก คุณสามารถเลือกปรับ การตั้งค่าแคช
ก่อนจะเริ่ม
ก่อนใช้ Cloud Run คุณต้องทำงานเบื้องต้นบางอย่างให้เสร็จสิ้น รวมถึงการตั้งค่าบัญชี Cloud Billing การเปิดใช้ Cloud Run API และติดตั้งเครื่องมือบรรทัดคำสั่ง gcloud
ตั้งค่าการเรียกเก็บเงินสำหรับโครงการของคุณ
Cloud Run ให้โควต้าการใช้งานฟรี แต่คุณยังคงต้องมี บัญชี Cloud Billing ที่เชื่อมโยงกับโปรเจ็กต์ Firebase เพื่อใช้งานหรือทดลองใช้ Cloud Run
เปิดใช้งาน API และติดตั้ง SDK
เปิดใช้งาน Cloud Run API ในคอนโซล Google APIs:
เปิดหน้า Cloud Run API ในคอนโซล Google APIs
เมื่อได้รับแจ้ง ให้เลือกโปรเจ็กต์ 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
Node.js
สร้างไดเร็กทอรีใหม่ชื่อ
helloworld-nodejs
จากนั้นเปลี่ยนไดเร็กทอรีเป็นไดเร็กทอรี:mkdir helloworld-nodejs
cd helloworld-nodejs
สร้างไฟล์
package.json
ด้วยเนื้อหาต่อไปนี้:สร้างไฟล์ใหม่ชื่อ
index.js
จากนั้นเพิ่มรหัสต่อไปนี้:รหัสนี้สร้างเว็บเซิร์ฟเวอร์พื้นฐานที่รับฟังพอร์ตที่กำหนดโดยตัวแปรสภาพแวดล้อม
PORT
แอปของคุณเสร็จแล้วและพร้อมที่จะบรรจุและอัปโหลดไปยัง Container Registry
Python
สร้างไดเร็กทอรีใหม่ชื่อ
helloworld-python
จากนั้นเปลี่ยนไดเร็กทอรีเป็นไดเร็กทอรี:mkdir helloworld-python
cd helloworld-python
สร้างไฟล์ใหม่ชื่อ
app.py
จากนั้นเพิ่มรหัสต่อไปนี้:รหัสนี้สร้างเว็บเซิร์ฟเวอร์พื้นฐานที่รับฟังพอร์ตที่กำหนดโดยตัวแปรสภาพแวดล้อม
PORT
แอปของคุณเสร็จแล้วและพร้อมที่จะบรรจุและอัปโหลดไปยัง Container Registry
Java
ติดตั้ง 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
ในไดเร็กทอรีเดียวกันกับไฟล์ต้นฉบับ คัดลอกเนื้อหาต่อไปนี้ลงในไฟล์ของคุณไป
Node.js
Python
Java
สร้างอิมเมจคอนเทนเนอร์ของคุณโดยใช้ 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
เพื่อ อนุญาตการเรียกใช้ ที่ไม่ผ่านการตรวจสอบสิทธิ์
- เลือกภูมิภาค (เช่น
รอสักครู่เพื่อให้การทำให้ใช้งานได้เสร็จสมบูรณ์ เมื่อสำเร็จ บรรทัดคำสั่งจะแสดง 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) } } ] }
ปรับใช้การกำหนดค่าโฮสติ้งของคุณกับไซต์ของคุณโดยเรียกใช้คำสั่งต่อไปนี้จากรูทของไดเร็กทอรีโครงการของคุณ:
firebase deploy
ขณะนี้สามารถเข้าถึงคอนเทนเนอร์ของคุณผ่าน URL ต่อไปนี้:
โดเมนย่อย Firebase ของคุณ:
PROJECT_ID .web.app/
และPROJECT_ID .firebaseapp.com/
โดเมนที่กำหนดเองที่ เชื่อมต่อใดๆ :
CUSTOM_DOMAIN /
ไปที่หน้าการกำหนดค่าโฮสติ้งสำหรับ รายละเอียดเพิ่มเติมเกี่ยวกับกฎการเขียนใหม่ คุณยังสามารถเรียนรู้เกี่ยวกับ ลำดับความสำคัญของการตอบกลับ สำหรับการกำหนดค่าโฮสติ้งต่างๆ
ทดสอบในเครื่อง
ในระหว่างการพัฒนา คุณสามารถเรียกใช้และทดสอบอิมเมจคอนเทนเนอร์ในเครื่องได้ สำหรับคำแนะนำโดยละเอียด โปรดไปที่ เอกสาร Cloud Run
ขั้นตอนถัดไป
ตั้งค่าการแคช เนื้อหาแบบไดนามิกของคุณบน CDN ส่วนกลาง
โต้ตอบกับบริการ Firebase อื่นๆ โดยใช้ Firebase Admin SDK
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Cloud Run รวม ถึงคำแนะนำวิธีการ ตั้งค่าโดยละเอียดสำหรับการตั้งค่า การจัดการ และการกำหนดค่าคอนเทนเนอร์
ตรวจสอบ ราคา โควต้า และขีดจำกัด สำหรับ Cloud Run