App Hosting được thiết kế để dễ sử dụng và ít cần bảo trì, với các chế độ cài đặt mặc định được tối ưu hoá cho hầu hết các trường hợp sử dụng. Đồng thời, App Hosting cung cấp các công cụ để bạn quản lý và định cấu hình phần phụ trợ cho các nhu cầu cụ thể của mình. Hướng dẫn này mô tả các công cụ và quy trình đó.
Đặt và cập nhật biến môi trường
Đôi khi, bạn có thể cần định cấu hình thêm cho quy trình xây dựng.
App Hosting cung cấp cấu hình môi trường để lưu trữ và truy xuất loại dữ liệu này cho dự án của bạn thông qua bảng điều khiển Firebase và trong apphosting.yaml.
Việc đặt biến môi trường trong bảng điều khiển Firebase là cách nhanh nhất để
bắt đầu. Hãy sử dụng apphosting.yaml nếu bạn cần
lưu trữ và truy cập các tham số bí mật,
đặt các biến chỉ có sẵn tại thời điểm bản dựng hoặc chạy, hoặc chia sẻ các biến môi trường
trên nhiều môi trường. Với cả bảng điều khiển và
apphosting.<env>.yaml, bạn có thể
đặt các giá trị khác nhau cho các môi trường khác nhau.
Bảng điều khiển Firebase

apphosting.yaml
env:
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
Cập nhật biến
Bạn có thể thêm, chỉnh sửa hoặc xoá các biến môi trường trong bảng điều khiển Firebase hoặc
bằng cách sử dụng apphosting.yaml:
Firebase bảng điều khiển:
Trong bảng điều khiển Firebase, hãy chuyển đến Lưu trữ và không máy chủ > App Hosting.
Chuyển đến Xem phần phụ trợ > Cài đặt > Môi trường.
Thêm, chỉnh sửa hoặc xoá các biến môi trường.
apphosting.yaml:Tìm hiểu cách tạo và chỉnh sửa tệp theo cách thủ công.
Các thay đổi của bạn sẽ chỉ có hiệu lực trong lần triển khai tiếp theo và sẽ không ảnh hưởng đến lần triển khai hiện tại. Hãy lưu và tạo một lần triển khai mới hoặc lưu các biến của bạn rồi triển khai sau.
Đặt phạm vi áp dụng của biến
Các biến môi trường được tạo trong bảng điều khiển Firebase có sẵn tại cả thời gian xây dựng và thời điểm chạy. Đây cũng là điều kiện mặc định cho các biến được xác định trong apphosting.yaml trừ phi bạn đã thu hẹp phạm vi đó bằng cách sử dụng thuộc tính availability. Trong apphosting.yaml (nhưng không phải trong bảng điều khiển), bạn có thể hạn chế một biến môi trường chỉ có sẵn cho môi trường tạo bản dựng hoặc chỉ có sẵn cho môi trường thời gian chạy.
env:
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- BUILD
- RUNTIME
Đối với các ứng dụng Next.js, bạn cũng có thể sử dụng tiền tố NEXT_PUBLIC_ theo cách tương tự như trong tệp dotenv để giúp một biến có thể truy cập trong trình duyệt.
env:
- variable: NEXT_PUBLIC_STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- BUILD
- RUNTIME
Tệp dotenv cho Next.js
Đối với các ứng dụng Next.js, dotenv các tệp chứa các biến môi trường hoạt động với App Hosting.
Khi tạo hoặc cập nhật phần phụ trợ, bạn có thể chuyển các biến môi trường từ
tệp dotenv sang bảng điều khiển Firebase bằng cách sao chép và dán toàn bộ
nội dung của tệp dotenv vào trường "Khoá" đầu tiên trong biểu mẫu "Thêm mới"
trong Cài đặt biến môi trường.
Tất cả các biến môi trường được sao chép theo cách này sẽ được định dạng gọn gàng vào biểu mẫu mà không cần nhập từng biến, miễn là dữ liệu đầu vào có định dạng như sau:
KEY1=value1
KEY2=value2
KEY3=value3
Đối với việc kiểm soát biến môi trường phức tạp hoặc chi tiết với bất kỳ khung nào, chúng tôi
khuyên bạn nên sử dụng
apphosting.yaml.
Biến môi trường được tự động điền sẵn
Có các biến môi trường được tự động điền sẵn bởi
App Hosting. Các biến này bao gồm các biến được Google Cloud,
cũng như các biến môi trường dành riêng cho Firebase khi appId
được đặt trên phần phụ trợ trong quá trình thiết lập:
FIREBASE_CONFIG: (có trong môi trường bản dựng và thời gian chạy) Cung cấp thông tin cấu hình dự án Firebase sau đây:{ "databaseURL": 'https://DATABASE_NAME.firebaseio.com', "storageBucket": '', "projectId": 'PROJECT_ID' } firebasestorage.appPROJECT_ID.Cấu hình này được tự động áp dụng khi bạn khởi chạy SDK quản trị Firebase mà không có đối số.
FIREBASE_WEBAPP_CONFIG: (chỉ có trong môi trường tạo bản dựng) Cung cấp thông tin cấu hình dự án Firebase sau đây:{ "apiKey": 'API_KEY', "appId": 'APP_ID', "authDomain": 'AUTH_DOMAIN.firebaseapp.com', "databaseURL": 'https://DATABASE_NAME.firebaseio.com', "messagingSenderId": 'PROJECT_NUMBER', "projectId": 'PROJECT_ID', "storageBucket": '', } firebasestorage.appPROJECT_ID.SDK Firebase JS tự động kiểm tra biến môi trường
FIREBASE_WEBAPP_CONFIGnày trong một tập lệnh postinstall trong quá trình xây dựng, cho phép bạn cũng khởi chạy SDK máy khách mà không có đối số nào.
Xem phần Tự động khởi chạy SDK của Firebase dành cho quản trị viên và SDK web để biết thêm thông tin về cách sử dụng các biến môi trường này để khởi chạy SDK.
Xin lưu ý rằng các giá trị trong cấu hình Firebase thực tế sẽ tương ứng với các tài nguyên cụ thể mà bạn đã cung cấp trong dự án của mình.
Hệ phân cấp biến
Dịch vụ Lưu trữ ứng dụng Firebase áp dụng các biến của bạn theo thứ tự ưu tiên dựa trên nguồn của chúng. Ví dụ: các giá trị được đặt trong bảng điều khiển Firebase luôn
ghi đè hoặc ưu tiên các giá trị được đặt trong apphosting.yaml và dotenv
tệp.
Sau đây là thứ tự ưu tiên đầy đủ:
- Firebase bảng điều khiển → các biến được đặt trong bảng điều khiển
apphosting.<env>.yaml→ các biến được chỉ định trong một tệp yaml dành riêng cho môi trường, chẳng hạn nhưapphosting.staging.yaml(xem Triển khai nhiều môi trường)apphosting.yaml→ các biến được chỉ định trong tệpapphosting.yaml- Hệ thống Firebase → các biến do Firebase đặt có chứa các giá trị cho
firebase_config jsonhoặcfirebase_webapp_config, cũng như các biến môi trường đặt tên máy chủ và cổng cho các ứng dụng SSR (do bộ chuyển đổi App Hosting đặt trongbundle.yaml)
Tên và giới hạn dành riêng
Các biến môi trường được xác định trong hợp đồng thời gian chạy vùng chứa Cloud Run được dành riêng và không thể đặt.
Các biến môi trường do môi trường cung cấp, ngoài các biến được đặt tự động, có thể thay đổi trong các phiên bản thời gian chạy trong tương lai. Để có kết quả tốt nhất, bạn không nên phụ thuộc vào hoặc sửa đổi bất kỳ biến môi trường nào mà bạn chưa đặt một cách rõ ràng, đồng thời hãy cân nhắc việc thêm tiền tố cho bất kỳ biến môi trường nào bằng một khoá duy nhất để tránh xung đột.
Một số khoá biến môi trường được dành riêng cho mục đích sử dụng nội bộ. Đừng sử dụng bất kỳ khoá nào trong số này trong tệp cấu hình của bạn:
- Chuỗi trống ("")
- Các khoá chứa "="
- Các khoá bắt đầu bằng
X_FIREBASE_,X_GOOGLE_hoặcCLOUD_RUN_ PORTK_SERVICEK_REVISIONK_CONFIGURATION- Khoá trùng lặp
Tạo và chỉnh sửa apphosting.yaml
Đối với cấu hình nâng cao, chẳng hạn như bí mật hoặc chế độ cài đặt thời gian chạy, chẳng hạn như giới hạn về mức độ đồng thời, CPU và bộ nhớ, bạn cần tạo và chỉnh sửa tệp apphosting.yaml trong thư mục gốc của ứng dụng. Tệp này hỗ trợ các tham chiếu đến các bí mật được quản lý bằng Cloud Secret Manager, giúp bạn có thể kiểm tra một cách an toàn vào hệ thống kiểm soát nguồn.
Để tạo apphosting.yaml, hãy chạy lệnh sau:
firebase init apphosting
Lệnh này sẽ tạo một tệp apphosting.yaml cơ bản dành cho người mới bắt đầu với cấu hình mẫu (đã nhận xét). Sau khi chỉnh sửa, một tệp apphosting.yaml thông thường có thể có dạng như
sau, với các chế độ cài đặt cho dịch vụ Cloud Run của phần phụ trợ, một số
biến môi trường và một số tham chiếu đến các bí mật do Cloud Secret
Manager quản lý:
# Settings for Cloud Run
runConfig:
minInstances: 2
maxInstances: 100
concurrency: 100
cpu: 2
memoryMiB: 1024
# Environment variables and secrets
env:
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- BUILD
- RUNTIME
- variable: API_KEY
secret: myApiKeySecret
# Same as API_KEY above but with a pinned version.
- variable: PINNED_API_KEY
secret: myApiKeySecret@5
# Same as API_KEY above but with the long form secret reference as defined by Cloud Secret Manager.
- variable: VERBOSE_API_KEY
secret: projects/test-project/secrets/secretID
# Same as API_KEY above but with the long form secret reference with pinned version.
- variable: PINNED_VERBOSE_API_KEY
secret: projects/test-project/secrets/secretID/versions/5
Phần còn lại của hướng dẫn này cung cấp thêm thông tin và bối cảnh cho các chế độ cài đặt mẫu này.
Định cấu hình chế độ cài đặt dịch vụ Cloud Run
Với apphosting.yaml chế độ cài đặt, bạn có thể định cấu hình cách cung cấp dịch vụ
Cloud Run. Các chế độ cài đặt có sẵn cho dịch vụ
Cloud Run được cung cấp trong đối tượng runConfig:
cpu– Số CPU được sử dụng cho mỗi thực thể phân phát (mặc định là 0).memoryMiB– Lượng bộ nhớ được phân bổ cho mỗi thực thể phân phát tính bằng MiB (mặc định là 512)maxInstances– Số lượng vùng chứa tối đa có thể chạy cùng một lúc (mặc định là 100 và được quản lý theo hạn mức)minInstances– Số lượng vùng chứa luôn hoạt động (mặc định là 0).concurrency– Số lượng yêu cầu tối đa mà mỗi thực thể phân phát có thể nhận (mặc định là 80).
Hãy lưu ý mối quan hệ quan trọng giữa cpu và memoryMiB; bộ nhớ có thể được đặt thành bất kỳ giá trị số nguyên nào từ 128 đến 32768, nhưng việc tăng giới hạn bộ nhớ có thể yêu cầu tăng giới hạn CPU:
- Trên 4GiB yêu cầu tối thiểu 2 CPU
- Trên 8GiB yêu cầu tối thiểu 4 CPU
- Trên 16GiB yêu cầu tối thiểu 6 CPU
- Trên 24GiB yêu cầu tối thiểu 8 CPU
Tương tự, giá trị của cpu ảnh hưởng đến chế độ cài đặt mức độ đồng thời. Nếu bạn đặt giá trị nhỏ hơn 1 CPU, bạn phải đặt mức độ đồng thời thành 1 và CPU sẽ chỉ được phân bổ trong quá trình xử lý yêu cầu.
Ghi đè tập lệnh xây dựng và chạy
App Hosting suy ra lệnh xây dựng và lệnh bắt đầu của ứng dụng dựa trên
khung được phát hiện. Nếu muốn sử dụng lệnh xây dựng hoặc lệnh bắt đầu tuỳ chỉnh, bạn có thể ghi đè các giá trị mặc định của
App Hosting trong apphosting.yaml.
scripts:
buildCommand: next build --no-lint
runCommand: node dist/index.js
Lệnh ghi đè lệnh xây dựng sẽ được ưu tiên hơn mọi lệnh xây dựng khác và
chọn không sử dụng bộ chuyển đổi khung cũng như tắt mọi chế độ tối ưu hoá dành riêng cho khung mà App Hosting cung cấp. Bạn nên sử dụng lệnh này khi các tính năng của ứng dụng không được bộ chuyển đổi hỗ trợ tốt. Nếu bạn muốn thay đổi lệnh xây dựng
nhưng vẫn sử dụng các bộ chuyển đổi mà chúng tôi cung cấp, hãy đặt tập lệnh xây dựng trong package.json
thay vì như mô tả trong App Hosting bộ chuyển đổi khung.
Sử dụng lệnh ghi đè lệnh chạy khi bạn muốn sử dụng một lệnh cụ thể để bắt đầu ứng dụng khác với lệnh mà App Hosting-suy ra.
Định cấu hình đầu ra bản dựng
App Hosting tối ưu hoá quá trình triển khai ứng dụng theo mặc định bằng cách xoá các tệp đầu ra không sử dụng
như khung chỉ định. Nếu bạn muốn tối ưu hoá thêm kích thước triển khai ứng dụng hoặc bỏ qua các chế độ tối ưu hoá mặc định, bạn có thể ghi đè chế độ này trong apphosting.yaml.
outputFiles:
serverApp:
include: [dist, server.js]
Tham số include nhận danh sách các thư mục và tệp liên quan đến thư mục gốc của ứng dụng cần thiết để triển khai ứng dụng của bạn. Nếu bạn muốn đảm bảo rằng tất cả các tệp đều được giữ lại, hãy đặt tham số include thành [.] và tất cả các tệp sẽ được triển khai.
Lưu trữ và truy cập các tham số bí mật
Thông tin nhạy cảm, chẳng hạn như khoá API, phải được lưu trữ dưới dạng bí mật. Bạn có thể tham chiếu các bí mật trong apphosting.yaml để tránh kiểm tra thông tin nhạy cảm vào hệ thống kiểm soát nguồn.
Các tham số thuộc loại secret biểu thị các tham số chuỗi có giá trị
được lưu trữ trong Cloud Secret Manager.
Thay vì lấy trực tiếp giá trị, các tham số bí mật sẽ kiểm tra sự tồn tại trong Cloud Secret Manager và tải các giá trị trong quá trình triển khai.
- variable: API_KEY
secret: myApiKeySecret
Các bí mật trong Cloud Secret Manager có thể có nhiều phiên bản. Theo mặc định, giá trị của một tham số bí mật có sẵn cho phần phụ trợ đang hoạt động của bạn được ghim vào phiên bản mới nhất có sẵn của bí mật tại thời điểm xây dựng phần phụ trợ. Nếu có các yêu cầu về việc quản lý phiên bản và vòng đời của các tham số, bạn có thể ghim vào các phiên bản cụ thể bằng Cloud Secret Manager. Ví dụ: để ghim vào phiên bản 5:
- variable: PINNED_API_KEY
secret: myApiKeySecret@5
Bạn có thể tạo bí mật bằng lệnh CLI Firebase
firebase apphosting:secrets:set và bạn sẽ được nhắc thêm các quyền cần thiết. Quy trình này cho phép bạn tự động thêm tham chiếu bí mật vào apphosting.yaml.
Để sử dụng đủ bộ chức năng của Cloud Secret Manager, bạn có thể sử dụng bảng điều khiển Cloud Secret Manager. Nếu làm như vậy, bạn cần cấp
quyền cho phần phụ trợ App Hosting bằng lệnh CLI Firebase
firebase apphosting:secrets:grantaccess.
Định cấu hình quyền truy cập VPC
Phần phụ trợ App Hosting có thể kết nối với mạng Đám mây riêng ảo (VPC). Để biết thêm thông tin và một ví dụ, hãy xem phần Kết nối Firebase App Hosting với mạng VPC.
Sử dụng tính năng ánh xạ vpcAccess trong tệp apphosting.yaml để định cấu hình quyền truy cập.
Sử dụng tên hoặc mã trình kết nối/mạng đủ điều kiện. Việc sử dụng mã cho phép tính di động giữa các môi trường dàn dựng và sản xuất với các trình kết nối/mạng khác nhau.
Cấu hình lưu lượng truy cập trực tiếp VPC (apphosting.yaml):
runConfig:
vpcAccess:
egress: PRIVATE_RANGES_ONLY # Default value
networkInterfaces:
# Specify at least one of network and/or subnetwork
- network: my-network-id
subnetwork: my-subnetwork-id
Cấu hình trình kết nối không máy chủ (apphosting.yaml):
runConfig:
vpcAccess:
egress: ALL_TRAFFIC
connector: connector-id
Quản lý phần phụ trợ
Các lệnh để quản lý cơ bản phần phụ trợ App Hosting được cung cấp trong bảng điều khiển Firebase và Firebase CLI. Phần này mô tả một số tác vụ quản lý phổ biến hơn, bao gồm cả việc tạo và xoá phần phụ trợ.
Tạo phần phụ trợ
Phần phụ trợ App Hosting là tập hợp các tài nguyên được quản lý mà App Hosting tạo để xây dựng và chạy ứng dụng web của bạn.
Firebase bảng điều khiển: Chuyển đến Lưu trữ và không máy chủ > App Hosting, rồi nhấp vào Tạo phần phụ trợ (nếu đây là phần phụ trợ đầu tiên trong Firebase dự án của bạn, hãy nhấp vào Bắt đầu).
Firebase CLI: (phiên bản 13.15.4 trở lên) Để tạo phần phụ trợ, hãy chạy lệnh sau từ thư mục gốc của thư mục dự án cục bộ, cung cấp mã dự án của bạn làm đối số:
firebase apphosting:backends:create --project PROJECT_ID
Đối với cả bảng điều khiển hoặc CLI, hãy làm theo lời nhắc để chọn một khu vực, thiết lập kết nối GitHub, và định cấu hình các chế độ cài đặt triển khai cơ bản sau:
Đặt thư mục gốc của ứng dụng (mặc định là
/)Đây thường là nơi đặt tệp
package.json.
Đặt nhánh đang hoạt động
Đây là nhánh của kho lưu trữ GitHub được triển khai đến URL đang hoạt động của bạn. Thông thường, đây là nhánh mà các nhánh tính năng hoặc nhánh phát triển được hợp nhất vào.
Chấp nhận hoặc từ chối triển khai tự động
Tính năng triển khai tự động được bật theo mặc định. Khi hoàn tất việc tạo phần phụ trợ, bạn có thể chọn triển khai ứng dụng của mình ngay lập tức lên App Hosting.
Gán tên cho phần phụ trợ.
Chọn môi trường thời gian chạy. Theo mặc định, phiên bản Node.j mới nhất được đề xuất sẽ được chọn trước cho bạn.
- Định cấu hình tính năng Cập nhật hình ảnh cơ sở tự động (ABIU). ABIU được bật theo mặc định và tự động áp dụng các bản vá bảo mật cho môi trường cơ bản của bạn. Bạn có thể chọn không sử dụng ABIU bằng cách chọn "Không chỉ định" cho thời gian chạy.
Xoá phần phụ trợ
Để xoá hoàn toàn một phần phụ trợ, trước tiên, hãy sử dụng bảng điều khiển Firebase hoặc Firebase CLI để xoá phần phụ trợ đó, sau đó xoá các tài sản liên quan theo cách thủ công, đặc biệt cẩn thận để không xoá bất kỳ tài nguyên nào mà các phần phụ trợ khác hoặc các khía cạnh khác của dự án Firebase có thể sử dụng.
Firebase bảng điều khiển: Trong trình đơn Cài đặt, hãy chọn Xoá phần phụ trợ.
Firebase CLI: (phiên bản 13.15.4 trở lên)
Chạy lệnh sau để xoá phần phụ trợ App Hosting. Lệnh này sẽ tắt tất cả các miền cho phần phụ trợ của bạn và xoá dịch vụ được liên kết Cloud Run:
firebase apphosting:backends:delete BACKEND_ID --project PROJECT_ID(Không bắt buộc) Trong thẻ bảng điều khiển Google Cloud cho Artifact Registry, hãy xoá hình ảnh cho phần phụ trợ của bạn trong "firebaseapphosting-images".
Trong Cloud Secret Manager, hãy xoá mọi bí mật có "apphosting" trong tên bí mật, đặc biệt cẩn thận để đảm bảo rằng các bí mật này không được các phần phụ trợ khác hoặc các khía cạnh khác của dự án Firebase sử dụng.