Połącz usługę Cloud Run z usługą Firebase Hosting, aby generować i wyświetlać treści dynamiczne lub tworzyć interfejsy API 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, aby wywołać aplikację 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 w trakcie 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 Artifact Registry
- Wdróż obraz kontenera w Cloud Run
- Przekieruj Hosting żądania do aplikacji konteneryzowanej
Aby zwiększyć skuteczność dostarczania 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 z 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 Cloud SDK.
Sprawdź, czy narzędzie
gcloud
jest skonfigurowane pod kątem odpowiedniego projektu:gcloud config list
Krok 1. Utwórz przykładową aplikację
Pamiętaj, że Cloud Run obsługuje wiele innych języków oprócz tych wymienionych w tym przykładzie.
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 Artifact Registry.
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 Artifact Registry.
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 Artifact Registry.
Zainstaluj Java SE 8 lub nowszą wersję JDK oraz CURL.
Pamiętaj, że musimy to zrobić tylko po to, aby utworzyć nowy projekt internetowy 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 Artifact Registry.
Krok 2. Umieść aplikację w kontenerze i prześlij ją do Artifact 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.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 /helloworldPo zakończeniu procesu wyświetli się komunikat o powodzeniu z nazwą obrazu
(gcr.io/PROJECT_ID/helloworld
).
Obraz kontenera jest teraz przechowywany w Artifact 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
Dozwolone regionyCloud Run
Aby uzyskać najlepszą wydajność, umieść usługę Cloud Run w usługach Hosting w tych regionach:
us-west1
us-central1
us-east1
europe-west1
asia-east1
Przekierowania z Hosting na 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
Wdróż za pomocą tego polecenia:
gcloud run deploy --image gcr.io/
PROJECT_ID /helloworldGdy 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
Zaczekaj chwilę na zakończenie wdrażania. Jeśli polecenie zadziała, w wierszu poleceń wyświetli się URL usługi. 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 kontenerowej aplikacji z adresu 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, które pasują 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) } } ] }
Wdrożyć konfigurację hostingu na swojej stronie, uruchamiając to polecenie w katalogu głównym katalogu projektu:
firebase deploy --only hosting
Jak funkcja pinTag
działa w bloku run
Dzięki tej funkcji możesz mieć pewność, że wersja usługi Cloud Run do generowania dynamicznych treści witryny jest synchronizowana ze statycznymi zasobami Hosting i konfiguracją Hosting. Ta funkcja umożliwia też wyświetlanie wersji przeredagowanych treści w Cloud Run na kanałach Hosting.
Jeśli dodasz
"pinTag": true
do blokurun
w konfiguracjihosting.rewrites
, Twoje statyczne zasoby Hosting i konfiguracja zostaną przypięte do najnowszej wersji usługi Cloud Run w momencie wdrożenia. Jeśli cofniesz wersję witryny, zostanie też wycofana wersja usługi „zablokowana”Cloud Run.Ta funkcja korzysta z tagów Cloud Run, których limit wynosi 1000 tagów na usługę i 2000 tagów na region. Oznacza to, że po setkach wdrożeń najstarsze wersje witryny mogą przestać działać.
Twój kontener jest teraz dostępny pod tymi adresami URL:
Twoje subdomeny Firebase:
PROJECT_ID.web.app/
iPROJECT_ID.firebaseapp.com/
dowolne połączone domeny niestandardowe:
CUSTOM_DOMAIN/
Więcej informacji o regułach przekierowania znajdziesz na stronie konfiguracji Hosting. 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.
Interakcja z innymi usługami Firebase za pomocą pakietu Firebase Admin SDK.
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.