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
- Kierowanie Hosting 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.
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 Artifact 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 Artifact 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 Artifact Registry.
Java
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, używając 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.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 pomyślnym przesłaniu 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
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
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 aplikacji w kontenerze 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) } } ] }
Wdrożyć konfigurację hostingu na swojej stronie, uruchamiając to polecenie w katalogu głównym katalogu 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/
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.