Połącz interfejs Cloud Run z parametrem Firebase Hosting, aby generować i udostępniać swoje treści dynamiczne, lub twórz interfejsy API typu REST jako mikroserwisy.
Za pomocą Cloud Run możesz wdrożyć aplikację spakowaną do obrazu kontenera. Następnie za pomocą Firebase Hosting możesz kierować żądania HTTPS wyzwalające aplikację znajdującą się w kontenerze.
- Cloud Run obsługuje kilka języków (w tym Go, Node.js, Python i Java), co daje Ci możliwość używania wybranego języka programowania i ramy.
- Cloud Run automatycznie skaluje w poziomie obraz kontenera, aby obsługiwać otrzymane żądania, a następnie skaluje go w dół, gdy zapotrzebowanie maleje.
- Płacisz tylko za procesor, pamięć i sieć wykorzystywane podczas obsługi żądań.
Przykładowe przypadki użycia i próbki dotyczące usługi Cloud Run zintegrowanej z Firebase Hosting znajdziesz w artykule Informacje o usłudze bez serwera.
Z tego przewodnika dowiesz się, jak:
- Tworzenie prostej aplikacji Hello World
- Konteneryzowanie aplikacji i przesyłanie jej do Container Registry
- Wdróż obraz kontenera w Cloud Run
- Kierowanie Hosting do aplikacji konteneryzowanej
Aby poprawić wydajność wyświetlania treści dynamicznych, możesz opcjonalnie dostosować ustawienia pamięci podręcznej.
Zanim zaczniesz
Zanim zaczniesz używać Cloud Run, musisz wykonać kilka wstępnych czynności, w tym skonfigurować konto Cloud Billing, włączyć interfejs API Cloud Run i zainstalować narzędzie wiersza poleceń gcloud
.
Konfigurowanie płatności w projekcie
Cloud Run oferuje bezpłatną pulę wykorzystania, ale aby korzystać z Cloud Run lub go wypróbować, musisz mieć konto Cloud Billing powiązane ze swoim projektem Firebase.
Włącz interfejs API i zainstaluj pakiet SDK
Włącz interfejs API Cloud Run w konsoli interfejsów API Google:
Otwórz stronę Cloud Run interfejsu API w konsoli interfejsów API Google.
Gdy pojawi się taka prośba, wybierz projekt Firebase.
Na stronie interfejsu API Cloud Run kliknij Włącz.
Zainstaluj i zainicjuj pakiet SDK Cloud.
Sprawdź, czy narzędzie
gcloud
jest skonfigurowane pod kątem odpowiedniego projektu:gcloud config list
Krok 1. Napisz przykładową aplikację
Pamiętaj, że Cloud Run obsługuje wiele innych języków oprócz tych wymienionych w tym przykładzie.
Go
Utwórz nowy katalog o nazwie
helloworld-go
, a następnie przejdź do tego katalogu:mkdir helloworld-go
cd helloworld-go
Utwórz nowy plik o nazwie
helloworld.go
i dodaj do niego ten kod:Ten kod tworzy podstawowy serwer WWW, który nasłuchuje na porcie określonym przez zmienną środowiskową
PORT
.
Aplikacja jest gotowa i możesz ją teraz skonteneryzować i przesłać do Container Registry.
Node.js
Utwórz nowy katalog o nazwie
helloworld-nodejs
i przejdź do niego:mkdir helloworld-nodejs
cd helloworld-nodejs
Utwórz plik
package.json
z tą zawartością:Utwórz nowy plik o nazwie
index.js
i dodaj do niego ten kod:Ten kod tworzy podstawowy serwer WWW, który nasłuchuje na porcie określonym przez zmienną środowiskową
PORT
.
Aplikacja jest gotowa i możesz ją teraz skonteneryzować i przesłać do Container Registry.
Python
Utwórz nowy katalog o nazwie
helloworld-python
i przejdź do niego:mkdir helloworld-python
cd helloworld-python
Utwórz nowy plik o nazwie
app.py
i dodaj do niego ten kod:Ten kod tworzy podstawowy serwer WWW, który nasłuchuje na porcie określonym przez zmienną środowiskową
PORT
.
Aplikacja jest gotowa i możesz ją teraz skonteneryzować i przesłać do Container Registry.
Java
Zainstaluj Java SE 8 lub nowsze JDK i CURL.
Pamiętaj, że będzie to konieczne tylko do utworzenia nowego projektu internetowego w następnym kroku. Plik Dockerfile, którego opis znajdziesz poniżej, wczyta wszystkie zależności do kontenera.
W konsoli utwórz nowy pusty projekt internetowy za pomocą poleceń cURL i unzip:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
Spowoduje to utworzenie projektu SpringBoot.
Zaktualizuj klasę
SpringBootApplication
wsrc/main/java/com/example/helloworld/HelloworldApplication.java
, dodając element@RestController
do obsługi mapowania/
, a także pole@Value
do podawania zmiennej środowiskowejTARGET
:Ten kod tworzy podstawowy serwer WWW, który nasłuchuje na porcie określonym przez zmienną środowiskową
PORT
.
Aplikacja jest gotowa i możesz ją teraz skonteneryzować i przesłać do Container Registry.
Krok 2. Umieść aplikację w kontenerze i prześlij ją do Container Registry
Skonteneryzuj przykładową aplikację, tworząc nowy plik o nazwie
Dockerfile
w tym samym katalogu, w którym znajdują się pliki źródłowe. Skopiuj do pliku te treści.Go
Node.js
Python
Java
Utwórz obraz kontenera za pomocą Cloud Build, uruchamiając podane poniżej polecenie z katalogu zawierającego plik Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Po zakończeniu procesu wyświetli się komunikat o powodzeniu z nazwą obrazu
(gcr.io/PROJECT_ID/helloworld
).
Obraz kontenera jest teraz przechowywany w Container Registry i w razie potrzeby można go użyć ponownie.
Pamiętaj, że zamiast Cloud Build możesz użyć zainstalowanej lokalnie wersji Dockera, aby utworzyć kontener lokalnie.
Krok 3. Wdróż obraz kontenera do Cloud Run
Wdróż usługę za pomocą tego polecenia:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
Gdy pojawi się odpowiedni komunikat:
- Wybierz region (na przykład
us-central1
) - Potwierdź nazwę usługi (na przykład
helloworld
). - Odpowiedź
Y
do zezwalania na nieuwierzytelnione wywołania
- Wybierz region (na przykład
Aby uzyskać najlepszą wydajność, kolokuj usługę Cloud Run z Hosting, korzystając z tych regionów:
us-west1
us-central1
us-east1
europe-west1
asia-east1
Przekierowania z formatu Hosting na format Cloud Run są obsługiwane w tych regionach:
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
Zaczekaj chwilę na zakończenie wdrażania. Jeśli polecenie zadziała, w wierszu poleceń wyświetli się URL usługi. Na przykład:
https://helloworld-RANDOM_HASH-us-central1.a.run.app Możesz teraz zobaczyć wdrożony kontener, otwierając URL usługi w przeglądarce.
W następnym kroku dowiesz się, jak uzyskać dostęp do tej konteneryzowanej aplikacji przez adres URLFirebase Hosting, aby mogła generować dynamiczne treści dla witryny hostowanej w Firebase.
Krok 4. Przekierowuj żądania hostingu do aplikacji w kontenerze
Za pomocą reguł przekształcania możesz kierować żądania pasujące do określonych wzorów do jednego miejsca docelowego.
Z tego przykładu dowiesz się, jak kierować wszystkie żądania ze strony /helloworld
w witrynie Hosting, aby uruchomić i uruchomić instancję kontenera helloworld
.
Sprawdź, czy:
Funkcja Firebase Hosting została zainicjowana.
Szczegółowe instrukcje dotyczące instalowania interfejsu wiersza poleceń i inicjowania usługi Hosting znajdziesz w przewodniku Pierwsze kroki z Hosting.
Otwórz plik
firebase.json
.W sekcji
hosting
dodaj tę konfiguracjęrewrite
:"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) } } ] }
Wdróż w swojej witrynie konfigurację hostingu, uruchamiając to polecenie w katalogu głównym projektu:
firebase deploy --only hosting
Twój kontener jest teraz dostępny pod tymi adresami URL:
Twoje subdomeny Firebase:
PROJECT_ID.web.app/
iPROJECT_ID.firebaseapp.com/
Wszystkie połączone domeny niestandardowe:
CUSTOM_DOMAIN/
Odwiedź stronę konfiguracji Hosting, aby dowiedzieć się więcej o regułach przepisywania. Możesz też dowiedzieć się więcej o kolejności priorytetów odpowiedzi w różnych konfiguracjach Hosting.
Testowanie lokalnie
Podczas tworzenia możesz uruchomić i przetestować obraz kontenera lokalnie. Szczegółowe instrukcje znajdziesz w dokumentacji Cloud Run.
Dalsze kroki
Skonfiguruj buforowanie treści dynamicznych w globalnej sieci CDN.
Komunikuj się z innymi usługami Firebase za pomocą pakietu SDK Firebase Admin.
Dowiedz się więcej o Cloud Run, w tym o szczegółowych instrukcjach dotyczących konfigurowania i zarządzania kontenerami.
Sprawdź ceny oraz limity i ograniczenia dotyczące usługi Cloud Run.