Połącz Cloud Run z Firebase Hosting, aby generować i udostępniać swoje treści dynamiczne lub tworzyć interfejsy API REST jako mikrousługi.
Za pomocą Cloud Run możesz wdrożyć aplikację spakowaną w obraz kontenera. Następnie za pomocą Firebase Hosting, możesz kierować żądania HTTPS, aby uruchamiać swoją aplikację w kontenerze.
- Cloud Run obsługuje kilka języków (w tym Go, Node.js, Python i Java), dzięki czemu możesz używać wybranego języka programowania i frameworka.
- Cloud Run automatycznie skaluje obraz kontenera w poziomie, 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ługiwania żądań.
Przykładowe przypadki użycia i przykłady Cloud Run zintegrowanego z Firebase Hosting, znajdziesz w omówieniu rozwiązań bezserwerowych.
Z tego przewodnika dowiesz się, jak:
- napisać prostą aplikację „Hello World”,
- skonteneryzować aplikację i przesłać ją do Artifact Registry
- Wdróż obraz kontenera w Cloud Run
- kierować Hosting żądania hostingu do aplikacji w kontenerze
Aby zwiększyć wydajność udostępniania zawartości dynamicznej, możesz opcjonalnie dostroić ustawienia pamięci podręcznej.
Zanim zaczniesz
Zanim zaczniesz korzystać z Cloud Run, musisz wykonać kilka wstępnych zadań,
m.in. skonfigurować konto Cloud Billing w Cloud, włączyć Cloud Run
API i zainstalować narzędzie wiersza poleceń gcloud.
Konfigurowanie płatności za projekt
Cloud Run oferuje bezpłatny limit wykorzystania, ale nadal musisz mieć Cloud Billing konto powiązane z projektem w Firebase, aby korzystać z Cloud Run lub go wypróbować.
Włączanie interfejsu API i instalowanie pakietu SDK
Włącz Cloud Run API w Konsoli interfejsów API Google:
Otwórz stronę interfejsu API Cloud Run w Konsoli interfejsów API Google.
Gdy pojawi się prośba, wybierz projekt w Firebase.
Na stronie API kliknij Włącz.Cloud Run
Zainstaluj i zainicjuj Cloud SDK.
Sprawdź, czy narzędzie
gcloudjest skonfigurowane dla właściwego projektu:gcloud config list
Krok 1. Tworzenie przykładowej aplikacji
Pamiętaj, że Cloud Run obsługuje wiele innych języków oprócz tych, które są pokazane w poniższym przykładzie.
Go
Utwórz nowy katalog o nazwie
helloworld-go, a następnie przejdź do niego:mkdir helloworld-go
cd helloworld-go
Utwórz nowy plik o nazwie
helloworld.go, 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 do skonteneryzowania i przesłania do Artifact Registry.
Node.js
Utwórz nowy katalog o nazwie
helloworld-nodejs, a następnie przejdź do niego:mkdir helloworld-nodejs
cd helloworld-nodejs
Utwórz plik
package.jsono tej 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 do skonteneryzowania i przesłania do Artifact Registry.
Python
Utwórz nowy katalog o nazwie
helloworld-python, a następnie przejdź do niego: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 do skonteneryzowania i przesłania do Artifact Registry.
Java
Zainstaluj Java SE 8 lub nowszy JDK oraz CURL.
Pamiętaj, że musisz to zrobić tylko po to, aby w następnym kroku utworzyć nowy projekt internetowy. Plik Dockerfile, który opisujemy później, załaduje wszystkie zależności do kontenera.
W konsoli utwórz nowy pusty projekt internetowy za pomocą poleceń cURL, a następnie rozpakuj go:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zipunzip helloworld.zip
Spowoduje to utworzenie projektu SpringBoot.
Zaktualizuj klasę
SpringBootApplicationwsrc/main/java/com/example/helloworld/HelloworldApplication.javaprzez dodanie@RestController, aby obsługiwać mapowanie/, a także dodaj pole@Value, aby udostępnić zmienną środowiskowąTARGET:Ten kod tworzy podstawowy serwer WWW, który nasłuchuje na porcie określonym przez zmienną środowiskową
PORT.
Aplikacja jest gotowa do skonteneryzowania i przesłania do Artifact Registry.
Krok 2. Konteneryzowanie aplikacji i przesyłanie jej do Artifact Registry
Skonteneryzuj przykładową aplikację, tworząc nowy plik o nazwie
Dockerfilew tym samym katalogu, w którym znajdują się pliki źródłowe. Skopiuj do pliku tę treść.Go
Node.js
Python
Java
Utwórz obraz kontenera przy pomocy Cloud Build, uruchamiając to polecenie z katalogu zawierającego Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Gdy operacja się powiedzie, zobaczysz komunikat z informacją o udanym przeprowadzeniu operacji i 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, jeśli jest to pożądane.
Zamiast Cloud Build możesz użyć lokalnie zainstalowanej wersji Dockera, aby utworzyć kontener lokalnie.
Krok 3. Wdrażanie obrazu kontenera w Cloud Run
Wdróż, używając tego polecenia:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
Gdy pojawi się prośba:
- Wybierz region (np.
us-central1). - Potwierdź nazwę usługi (np.
helloworld). - Odpowiedz
Y, aby zezwolić na wywołania bez uwierzytelniania
- Wybierz region (np.
Poczekaj chwilę na zakończenie wdrażania. Gdy operacja się powiedzie, w wierszu poleceń wyświetli się adres URL usługi. Na przykład:
https://helloworld-RANDOM_HASH-us-central1.a.run.app Otwórz adres URL usługi w przeglądarce, aby zobaczyć wdrożony kontener.
W następnym kroku dowiesz się, jak uzyskać dostęp do tej aplikacji w kontenerze z adresu Firebase Hosting URL , aby mogła ona generować treści dynamiczne dla Twojej witryny hostowanej w Firebase.
Krok 4. Kierowanie żądań hostingu do aplikacji w kontenerze
Za pomocą reguł przekierowania możesz kierować żądania pasujące do określonych wzorców do jednego miejsca docelowego.
Poniższy przykład pokazuje, jak kierować wszystkie żądania ze strony
/helloworld w witrynie Hosting w celu uruchamiania
instancji kontenera helloworld.
Sprawdź, czy:
masz najnowszą wersję CLIFirebase.
masz zainicjowany Firebase Hosting.
Szczegółowe instrukcje instalowania CLI i inicjowania Hosting znajdziesz w przewodniku dla początkujących dotyczącym Hosting.
Otwórz plik
firebase.json.Dodaj tę konfigurację
rewritew sekcjihosting:"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 witrynie, uruchamiając to polecenie w katalogu głównym projektu:
firebase deploy --only hosting
Kontener jest teraz dostępny pod tymi adresami URL:
Subdomeny Firebase:
PROJECT_ID.web.app/iPROJECT_ID.firebaseapp.com/Wszystkie połączone niestandardowe domeny:
CUSTOM_DOMAIN/
Więcej informacji o regułach przekierowania znajdziesz na stronie konfiguracji Hosting dla . Możesz też dowiedzieć się więcej o kolejności priorytetów odpowiedzi w przypadku różnych Hosting konfiguracji.
Testowanie lokalne
Podczas programowania możesz uruchamiać i testować obraz kontenera lokalnie. Szczegółowe inst rukcje znajdziesz w Cloud Run dokumentacji.
Dalsze kroki
Skonfiguruj buforowanie treści dynamicznych w globalnej sieci CDN.
Korzystaj z innych usług Firebase za pomocą pakietu Firebase Admin SDK.
Dowiedz się więcej o Cloud Run, w tym szczegółowe przewodniki dotyczące konfigurowania kontenerów, zarządzania nimi i ich konfigurowania.
Sprawdź cennik oraz limity i ograniczenia dla Cloud Run.