Połącz Cloud Run z parametrem Firebase Hosting, aby wygenerować i wyświetlać dynamiczne treści lub tworzenie interfejsów REST API jako mikroserwisów.
Dzięki Cloud Run możesz: wdrożysz 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 i w poziomie obrazu kontenera w celu obsługi otrzymanych żądań, a następnie skaluje się w dół, maleje popyt.
- Płacisz tylko za procesor, pamięć i sieć wykorzystywane w trakcie obsługiwania żądań.
Przykładowe przypadki użycia i przykłady dotyczące platformy Cloud Run zintegrowanej z Firebase Hosting, odwiedź Omówienie technologii bezserwerowych.
Z tego przewodnika dowiesz się, jak:
- Tworzenie prostej aplikacji Hello World
- Konteneryzowanie aplikacji i przesyłanie jej do Container Registry
- Wdróż obraz kontenera w środowisku Cloud Run
- Kierowanie żądań Hosting do aplikacji skonteneryzowanej
Pamiętaj, że aby poprawić wydajność wyświetlania treści dynamicznej, możesz: (opcjonalnie) dostosuj ustawienia pamięci podręcznej.
Zanim zaczniesz
Zanim zaczniesz używać usługi Cloud Run, musisz wykonać pewne zadania wstępne.
między innymi przez skonfigurowanie konta Cloud Billing czy włączenie funkcji Cloud Run
API i zainstalowanie narzędzia wiersza poleceń gcloud
.
Skonfiguruj rozliczenia w projekcie
Cloud Run oferuje bezpłatny limit wykorzystania, ale i tak musisz mieć Cloud Billing konto powiązane z projektem Firebase, aby używać lub wypróbować usługę Cloud Run.
Włącz interfejs API i zainstaluj pakiet SDK
Włącz interfejs API Cloud Run w konsoli interfejsów API Google:
Otwórz aplikację Strona interfejsu API Cloud Run w konsoli interfejsów API Google.
Gdy pojawi się taka prośba, wybierz projekt Firebase.
Kliknij Włącz na stronie interfejsu API Cloud Run.
Zainstaluj i zainicjuj pakietu SDK Cloud.
Sprawdź, czy narzędzie
gcloud
jest skonfigurowane dla właściwego projektu:gcloud config list
Krok 1. Napisz przykładową aplikację
Pamiętaj, że Cloud Run obsługuje wiele innych języków oprócz języków wymienionych w poniższym przykładzie.
Go
Utwórz nowy katalog o nazwie
helloworld-go
, a następnie zmień katalog na :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
, a następnie zmień katalog w nim:mkdir helloworld-nodejs
cd helloworld-nodejs
Utwórz plik
package.json
z tą zawartością:Utwórz nowy plik o nazwie
index.js
, a następnie dodaj 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
, a następnie zmień katalog w nim:mkdir helloworld-python
cd helloworld-python
Utwórz nowy plik o nazwie
app.py
, a następnie dodaj 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 nowszej JDK i CURL.
Pamiętaj, że jest to konieczne tylko do utworzenia nowego projektu internetowego w kolejny krok. Plik Dockerfile, którego opis znajdziesz poniżej, wczyta wszystkie zależności do kontenera.
W konsoli utwórz nowy, pusty projekt internetowy przy użyciu polecenia cURL, a następnie polecenia rozpakowywania:
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
Skonteneryzujesz przykładową aplikację, tworząc nowy plik o nazwie
Dockerfile
w w tym samym katalogu co pliki źródłowe. Skopiuj do pliku te treści.Go
Node.js
Python
Java
Utwórz obraz kontenera za pomocą narzędzia Cloud Build, uruchamiając to polecenie w katalogu zawierającym plik Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Gdy zakończy się pomyślnie, wyświetli się komunikat z informacją o udanym przeprowadzeniu operacji i nazwą obrazu.
(gcr.io/PROJECT_ID/helloworld
).
Obraz kontenera jest teraz przechowywany w usłudze Container Registry i można go użyć ponownie, jeśli pożądaną.
Pamiętaj, że zamiast Cloud Build możesz użyć wersji zainstalowanej lokalnie. Dockera, aby Utwórz kontener lokalnie.
Krok 3. Wdróż obraz kontenera w środowisku Cloud Run
Wdróż za pomocą tego polecenia:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
Gdy pojawi się komunikat:
- Wybierz region (na przykład
us-central1
) - Potwierdź nazwę usługi (np.
helloworld
) - Odpowiedz
Y
na zezwolenie 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
Przepisywanie na Cloud Run z: Hosting jest obsługiwane w te regiony:
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
Poczekaj chwilę na zakończenie wdrażania. Kiedy operacja zostanie wykonana, wyświetla adres URL usługi. Na przykład:
https://helloworld-RANDOM_HASH-us-central1.a.run.app Przejdź do wdrożonego kontenera, otwierając adres URL usługi w przeglądarce.
W następnym kroku dowiesz się, jak uzyskać dostęp do tej skonteneryzowanej aplikacji z poziomu Firebase Hosting, aby mógł generować treści dynamiczne Witryna hostowana w Firebase.
Krok 4. Przekierowuj żądania hostingu do aplikacji w kontenerze
Na reguły przepisywania, możesz kierować żądania pasujące do określonych wzorców w jednym miejscu docelowym.
Przykład poniżej pokazuje, jak kierować wszystkie żądania ze strony
/helloworld
w witrynie Hosting, aby uruchomić i uruchomić
instancji kontenera helloworld
.
Sprawdź, czy:
Funkcja Firebase Hosting została zainicjowana.
Szczegółowe instrukcje instalowania i inicjowania interfejsu wiersza poleceń Hosting, zobacz Przewodnik dla początkujących – 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óż konfigurację hostingu w swojej witrynie, 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/
Otwórz stronę konfiguracji usługi Hosting dla: dowiedz 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.
Przetestuj lokalnie
Podczas tworzenia możesz uruchomić i przetestować obraz kontenera lokalnie. Dla: szczegółowe instrukcje znajdziesz w dokumentacja Cloud Run.
Dalsze kroki
Skonfiguruj buforowanie zawartości dynamicznej na 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 Cloud Run.