Ghép nối Cloud Run với Firebase Hosting để tạo và phân phát nội dung động hoặc tạo API REST dưới dạng dịch vụ vi mô.
Bằng cách sử dụng Cloud Run, bạn có thể triển khai ứng dụng được đóng gói trong hình ảnh vùng chứa. Sau đó, sử dụng Firebase Hosting, bạn có thể chuyển hướng các yêu cầu HTTPS để kích hoạt ứng dụng trong vùng chứa.
- Cloud Run hỗ trợ một số ngôn ngữ (bao gồm Go, Node.js, Python và Java), mang đến cho bạn sự linh hoạt khi sử dụng ngôn ngữ lập trình và khung chương trình mà bạn chọn.
- Cloud Run điều chỉnh tự động và theo chiều ngang hình ảnh vùng chứa của bạn để xử lý các yêu cầu đã nhận được, sau đó thu nhỏ khi nhu cầu giảm xuống.
- Bạn chỉ trả tiền cho CPU, bộ nhớ và kết nối mạng tiêu thụ trong quá trình xử lý yêu cầu.
Ví dụ về các trường hợp sử dụng và mẫu cho Cloud Run được tích hợp với Firebase Hosting, hãy truy cập vào tổng quan về mô hình không máy chủ.
Hướng dẫn này chỉ cho bạn cách:
- Viết một ứng dụng Hello World đơn giản
- Thêm ứng dụng vào vùng chứa rồi tải ứng dụng đó lên Container Registry
- Triển khai hình ảnh vùng chứa cho Cloud Run
- Chuyển hướng các yêu cầu Hosting đến ứng dụng được đóng gói trong vùng chứa
Xin lưu ý rằng để cải thiện hiệu suất phân phát nội dung động, bạn có thể tinh chỉnh chế độ cài đặt bộ nhớ đệm nếu muốn.
Trước khi bắt đầu
Trước khi sử dụng Cloud Run, bạn cần hoàn tất một số nhiệm vụ ban đầu, bao gồm cả việc thiết lập tài khoản Cloud Billing, bật API Cloud Run và cài đặt công cụ dòng lệnh gcloud
.
Thiết lập thông tin thanh toán cho dự án
Cloud Run cung cấp hạn mức sử dụng miễn phí, nhưng bạn vẫn phải có tài khoản Cloud Billing liên kết với dự án Firebase để sử dụng hoặc dùng thử Cloud Run.
Bật API và cài đặt SDK
Bật API Cloud Run trong bảng điều khiển API của Google:
Mở Trang API Cloud Run trong bảng điều khiển API của Google.
Khi được nhắc, hãy chọn dự án Firebase của bạn.
Nhấp vào Bật trên trang API Cloud Run.
Cài đặt và khởi chạy Cloud SDK.
Kiểm tra để đảm bảo bạn đã định cấu hình công cụ
gcloud
cho đúng dự án:gcloud config list
Bước 1: Viết ứng dụng mẫu
Xin lưu ý rằng Cloud Run hỗ trợ nhiều ngôn ngữ khác ngoài các ngôn ngữ hiển thị trong mẫu sau.
Tiến hành
Tạo một thư mục mới có tên là
helloworld-go
, sau đó thay đổi thư mục thành nó:mkdir helloworld-go
cd helloworld-go
Tạo tệp mới có tên
helloworld.go
, sau đó thêm đoạn mã sau:Mã này tạo một máy chủ web cơ bản để nghe trên cổng do biến môi trường
PORT
xác định.
Ứng dụng đã hoàn tất và sẵn sàng để bạn lưu trữ cũng như tải lên Container Registry.
Node.js
Tạo một thư mục mới có tên là
helloworld-nodejs
, sau đó thay đổi thư mục vào đó:mkdir helloworld-nodejs
cd helloworld-nodejs
Tạo tệp
package.json
có các nội dung sau:Tạo tệp mới có tên
index.js
, sau đó thêm đoạn mã sau:Mã này tạo một máy chủ web cơ bản nghe trên cổng được xác định bởi biến môi trường
PORT
.
Ứng dụng đã hoàn tất và sẵn sàng để bạn lưu trữ cũng như tải lên Container Registry.
Python
Tạo một thư mục mới có tên là
helloworld-python
, sau đó thay đổi thư mục vào đó:mkdir helloworld-python
cd helloworld-python
Tạo một tệp mới có tên
app.py
, sau đó thêm mã sau:Mã này tạo một máy chủ web cơ bản nghe trên cổng được xác định bởi biến môi trường
PORT
.
Ứng dụng của bạn đã hoàn tất và sẵn sàng được đóng gói vào vùng chứa rồi tải lên Container Registry.
Java
Cài đặt JDK Java SE 8 trở lên và CURL.
Xin lưu ý rằng chúng ta chỉ cần thực hiện thao tác này để tạo dự án web mới trong bước tiếp theo. Tệp Dockerfile (được mô tả sau) sẽ tải tất cả các phần phụ thuộc vào vùng chứa.
Trong bảng điều khiển, hãy tạo một dự án web trống mới bằng cURL, sau đó lệnh giải nén:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
Thao tác này sẽ tạo một dự án SpringBoot.
Cập nhật lớp
SpringBootApplication
trongsrc/main/java/com/example/helloworld/HelloworldApplication.java
theo thêm@RestController
để xử lý việc ánh xạ/
, đồng thời thêm một Trường@Value
để cung cấp biến môi trườngTARGET
:Mã này tạo một máy chủ web cơ bản nghe trên cổng được xác định bởi biến môi trường
PORT
.
Ứng dụng đã hoàn tất và sẵn sàng để bạn lưu trữ cũng như tải lên Container Registry.
Bước 2: Vùng chứa một ứng dụng rồi tải ứng dụng đó lên Container Registry
Vùng chứa ứng dụng mẫu bằng cách tạo một tệp mới có tên
Dockerfile
trong cùng thư mục với tệp nguồn. Sao chép nội dung sau vào .Tiến hành
Node.js
Python
Java
Tạo hình ảnh vùng chứa bằng cách sử dụng Cloud Build bằng cách chạy lệnh sau từ thư mục chứa Dockerfile của bạn:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Sau khi thành công, bạn sẽ thấy thông báo THÀNH CÔNG chứa tên hình ảnh
(gcr.io/PROJECT_ID/helloworld
).
Hình ảnh vùng chứa hiện được lưu trữ trong Container Registry và có thể được sử dụng lại nếu mong muốn.
Lưu ý rằng bạn có thể sử dụng phiên bản được cài đặt cục bộ thay vì Cloud Build của Docker đến tạo vùng chứa cục bộ.
Bước 3: Triển khai hình ảnh vùng chứa cho Cloud Run
Triển khai bằng lệnh sau:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
Khi được nhắc:
- Chọn một khu vực (ví dụ:
us-central1
) - Xác nhận tên dịch vụ (ví dụ:
helloworld
) - Phản hồi
Y
để cho phép lệnh gọi chưa được xác thực
- Chọn một khu vực (ví dụ:
Để có hiệu suất tốt nhất, hãy sắp xếp lại dịch vụ Cloud Run của bạn với Hosting bằng cách sử dụng các khu vực sau:
us-west1
us-central1
us-east1
europe-west1
asia-east1
Viết lại thành Cloud Run từ Hosting được hỗ trợ trong những khu vực sau:
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
Hãy đợi trong giây lát để quá trình triển khai hoàn tất. Khi thành công, dòng lệnh hiển thị URL dịch vụ. Ví dụ:
https://helloworld-RANDOM_HASH-us-central1.a.run.app Truy cập vào vùng chứa mà bạn đã triển khai bằng cách mở URL dịch vụ trong trình duyệt web.
Bước tiếp theo sẽ hướng dẫn bạn cách truy cập vào ứng dụng được đóng gói này từ một URL Firebase Hosting để ứng dụng có thể tạo nội dung động cho trang web được lưu trữ trên Firebase.
Bước 4: Hướng các yêu cầu lưu trữ đến ứng dụng nằm trong vùng chứa của bạn
Bằng viết lại quy tắc, bạn có thể chuyển hướng các yêu cầu khớp các mẫu cụ thể với một đích đến duy nhất.
Ví dụ sau đây cho biết cách chuyển hướng tất cả yêu cầu từ trang
/helloworld
trên trang web Hosting của bạn để kích hoạt quá trình khởi động và chạy
thực thể vùng chứa helloworld
của bạn.
Hãy đảm bảo rằng:
Bạn đã khởi chạy Firebase Hosting.
Để biết hướng dẫn chi tiết về cách cài đặt CLI và khởi tạo Hosting, hãy xem Hướng dẫn bắt đầu sử dụng Hosting.
Mở tệp
firebase.json
của bạn.Thêm cấu hình
rewrite
sau trong phầnhosting
:"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) } } ] }
Triển khai cấu hình lưu trữ cho trang web của bạn bằng cách chạy lệnh sau từ thư mục gốc của dự án:
firebase deploy --only hosting
Giờ đây, bạn có thể truy cập vào vùng chứa của mình thông qua các URL sau:
Miền con Firebase:
PROJECT_ID.web.app/
vàPROJECT_ID.firebaseapp.com/
Mọi miền tuỳ chỉnh đã kết nối:
CUSTOM_DOMAIN/
Truy cập trang cấu hình Hosting cho thêm chi tiết về quy tắc ghi lại. Bạn có thể cũng sẽ tìm hiểu về thứ tự ưu tiên của phản hồi cho nhiều cấu hình Hosting.
Kiểm thử cục bộ
Trong quá trình phát triển, bạn có thể chạy và kiểm thử hình ảnh vùng chứa trên máy. Để hướng dẫn chi tiết, hãy truy cập vào Tài liệu Cloud Run.
Các bước tiếp theo
Thiết lập việc lưu vào bộ nhớ đệm của nội dung động trên CDN trên toàn cầu.
Tương tác với các dịch vụ Firebase khác bằng SDK Quản trị Firebase.
Tìm hiểu thêm về Cloud Run, bao gồm hướng dẫn cách thực hiện chi tiết cho thiết lập, quản lý và định cấu hình vùng chứa.