Kết hợp Cloud Run với Firebase Hosting để tạo và phân phát nội dung động hoặc xây dựng API REST dưới dạng dịch vụ vi mô.
Khi sử dụng Cloud Run, bạn có thể triển khai một ứng dụng được đóng gói trong một hình ảnh vùng chứa. Sau đó, bằng cách 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 của mình.
- Cloud Run hỗ trợ nhiều ngôn ngữ (bao gồm cả Go, Node.js, Python và Java), giúp bạn linh hoạt sử dụng ngôn ngữ lập trình và khung mà bạn chọn.
- Cloud Run tự động điều chỉnh quy mô 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 đó giảm quy mô khi nhu cầu giảm.
- Bạn chỉ trả phí cho CPU, bộ nhớ và mạng được sử dụng trong quá trình xử lý yêu cầu.
Để xem các trường hợp sử dụng và mẫu ví dụ cho Cloud Run được tích hợp với Firebase Hosting, hãy truy cập vào phần tổng quan về mô hình không máy chủ của chúng tôi.
Hướng dẫn này cho bạn biết cách:
- Viết một ứng dụng Hello World đơn giản
- Đóng gói một ứng dụng vào vùng chứa và tải ứng dụng đó lên Artifact 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 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ể điều chỉnh chế độ cài đặt bộ nhớ đệm (không bắt buộc).
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 của bạ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ó một tài khoản Cloud Billing liên kết với dự án Firebase của mình để sử dụng hoặc dùng thử Cloud Run.
Bật API và cài đặt SDK
Bật API Cloud Run trong Google API Console:
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 động Cloud SDK.
Kiểm tra để đảm bảo công cụ
gcloudđược định cấu hình 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ữ trong mẫu sau đây.
Bắt đầu
Tạo một thư mục mới có tên là
helloworld-go, sau đó thay đổi thư mục thành thư mục đó:mkdir helloworld-go
cd helloworld-go
- Tạo một tệp mới có tên là
helloworld.go, sau đó thêm mã sau:
Mã này tạo một máy chủ web cơ bản, lắng nghe trên cổng được xác định bằng biến môi trường
PORT.- Tạo một tệp mới có tên là
Ứ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 Artifact Registry.
Node.js
Tạo một thư mục mới có tên là
helloworld-nodejs, sau đó thay đổi thư mục thành thư mục đó:mkdir helloworld-nodejs
cd helloworld-nodejs
Tạo tệp
package.jsoncó các nội dung sau:Tạo một tệp mới có tên là
index.js, sau đó thêm mã sau:Mã này tạo một máy chủ web cơ bản, lắng nghe trên cổng do biến môi trường
PORTxác định.
Ứ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 Artifact Registry.
Python
Tạo một thư mục mới có tên
helloworld-python, sau đó thay đổi thư mục thành thư mục đó:mkdir helloworld-python
cd helloworld-python
Tạo một tệp mới có tên là
app.py, sau đó thêm mã sau:Mã này tạo một máy chủ web cơ bản, lắng nghe trên cổng được xác định bằng 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à tải lên Artifact Registry.
Java
Cài đặt Java SE 8 hoặc JDK mới hơn và CURL.
Xin lưu ý rằng chúng ta chỉ cần làm việc này để tạo dự án web mới trong bước tiếp theo. Dockerfile (được mô tả ở phần 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 đó giải nén các lệnh:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zipunzip helloworld.zip
Thao tác này sẽ tạo một dự án SpringBoot.
Cập nhật lớp
SpringBootApplicationtrongsrc/main/java/com/example/helloworld/HelloworldApplication.javabằng cách thêm@RestControllerđể xử lý mối liên kết/, đồng thời thêm 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, lắng nghe trên cổng do biến môi trường
PORTxác định.
Ứ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 Artifact Registry.
Bước 2: Đưa ứng dụng vào vùng chứa và tải ứng dụng lên Artifact Registry
Đóng gói ứng dụng mẫu bằng cách tạo một tệp mới có tên là
Dockerfiletrong cùng thư mục với các tệp nguồn. Sao chép nội dung sau vào tệp của bạn.Bắt đầu
Node.js
Python
Java
Tạo hình ảnh vùng chứa bằng Cloud Build bằng cách chạy lệnh sau từ thư mục chứa Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Khi thành công, bạn sẽ thấy thông báo SUCCESS (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 Artifact Registry và có thể được sử dụng lại nếu muốn.
Xin lưu ý rằng thay vì Cloud Build, bạn có thể sử dụng phiên bản Docker được cài đặt cục bộ để 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 xác thực
- Chọn một khu vực (ví dụ:
Hãy chờ một lúc để quá trình triển khai hoàn tất. Nếu thành công, dòng lệnh sẽ hiển thị URL của dịch vụ. Ví dụ:
https://helloworld-RANDOM_HASH-us-central1.a.run.app Truy cập vào vùng chứa đã 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 trong vùng chứa này từ một Firebase Hosting URL để ứng dụng có thể tạo nội dung động cho trang web được lưu trữ trên Firebase.
Bước 4: Chuyển hướng các yêu cầu lưu trữ đến ứng dụng trong vùng chứa
Với quy tắc ghi lại, bạn có thể chuyển hướng các yêu cầu khớp với các mẫu cụ thể đến 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.
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 chạy Hosting, hãy xem Hướng dẫn bắt đầu sử dụng Hosting.
Thêm cấu hình
rewritesau đây vào 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 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 của bạn:
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 vào trang cấu hình Hosting để biết thêm thông tin chi tiết về quy tắc ghi lại. Bạn cũng có thể tìm hiểu về thứ tự ưu tiên của các 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 của mình. Để biết hướng dẫn chi tiết, hãy xem tài liệu về Cloud Run.
Các bước tiếp theo
Thiết lập tính năng lưu nội dung động vào bộ nhớ đệm trên một CDN toàn cầu.
Tương tác với các dịch vụ khác của Firebase bằng SDK của Firebase dành cho quản trị viên.
Tìm hiểu thêm về Cloud Run, bao gồm cả hướng dẫn chi tiết về cách thiết lập, quản lý và định cấu hình vùng chứa.
Xem giá cũng như hạn mức và giới hạn cho Cloud Run.