Połącz Cloud Run z Firebase Hosting, aby generować i udostępniać zawartość dynamiczną lub tworzyć 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, aby uruchamiać aplikację w kontenerze.
- Cloud Run obsługuje kilka języków (w tym Go, Node.js, Python i Java), co zapewnia elastyczność korzystania z wybranego języka programowania i platformy.
- 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łady zastosowań i przykłady kodu dla Cloud Run zintegrowanego z Firebase Hosting znajdziesz w naszym omówieniu rozwiązań bezserwerowych.
Z tego przewodnika dowiesz się, jak:
- Tworzenie prostej aplikacji Hello World
- Skonteneryzowanie aplikacji i przesłanie jej do Artifact Registry
- Wdrażanie obrazu kontenera w Cloud Run
- Kierowanie żądań Hosting do aplikacji w kontenerze
Pamiętaj, że aby zwiększyć wydajność udostępniania zawartości dynamicznej, możesz opcjonalnie dostosować ustawienia pamięci podręcznej.
Zanim zaczniesz
Zanim zaczniesz korzystać z Cloud Run, musisz wykonać kilka czynności wstępnych, takich jak skonfigurowanie konta Cloud Billing, włączenie interfejsu API Cloud Run i zainstalowanie narzędzia wiersza poleceń gcloud.
Skonfiguruj płatności w projekcie.
Cloud Run oferuje bezpłatny limit wykorzystania, ale aby korzystać z Cloud Run lub wypróbować tę usługę, musisz mieć konto Cloud Billing powiązane z projektem w Firebase.
Włączanie interfejsu API i instalowanie pakietu SDK
Włącz interfejs 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 interfejsu API Cloud Run kliknij Włącz.
Zainstaluj i zainicjuj pakiet SDK Cloud.
Sprawdź, czy narzędzie
gcloudjest skonfigurowane dla właściwego 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, które są widoczne w poniższym przykładzie.
Go
Utwórz nowy katalog o nazwie
helloworld-goi 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.- Utwórz nowy plik o nazwie
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, a następnie przejdź do niego:mkdir helloworld-nodejs
cd helloworld-nodejs
Utwórz plik
package.jsonz 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 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 i możesz ją teraz skonteneryzować i przesłać do Artifact Registry.
Java
Zainstaluj Java SE 8 lub nowszy JDK oraz CURL.
Pamiętaj, że musimy to zrobić tylko po to, aby w następnym kroku utworzyć nowy projekt internetowy. Plik Dockerfile, który zostanie opisany później, wczyta wszystkie zależności do kontenera.
W konsoli utwórz nowy pusty projekt internetowy za pomocą poleceń cURL, a następnie unzip:
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ę
SpringBootApplicationw plikusrc/main/java/com/example/helloworld/HelloworldApplication.java, dodając@RestControllerdo obsługi mapowania/, a także dodaj pole@Value, aby podać zmienną środowiskowąTARGET: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. Skonteneryzuj aplikację i prześlij ją 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 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
Gdy operacja się powiedzie, wyświetli się 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.
Pamiętaj, że zamiast Cloud Build możesz użyć lokalnie zainstalowanej wersji Dockera, aby utworzyć kontener lokalnie.
Krok 3. Wdróż obraz kontenera w Cloud Run
Wdróż za pomocą 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 nieuwierzytelnione wywołania.
- Wybierz region (np.
Poczekaj chwilę na zakończenie wdrażania. Kiedy operacja zostanie wykonana, w wierszu poleceń wyświetli się URL usługi. Na przykład:
https://helloworld-RANDOM_HASH-us-central1.a.run.app Zobacz wdrożony kontener, otwierając URL usługi w przeglądarce.
W następnym kroku dowiesz się, jak uzyskać dostęp do tej skonteneryzowanej aplikacji z adresu URL Firebase Hosting, aby mogła generować zawartość dynamiczną dla witryny hostowanej w Firebase.
Krok 4. Kieruj żądania hostingu do skonteneryzowanej aplikacji
Za pomocą reguł przepisywania możesz kierować żądania pasujące do określonych wzorców do jednego miejsca docelowego.
Poniższy przykład pokazuje, jak przekierować wszystkie żądania ze strony /helloworld w witrynie Hosting, aby uruchomić instancję kontenera helloworld.
Sprawdź, czy:
Zainicjowano Firebase Hosting.
Szczegółowe instrukcje instalowania interfejsu wiersza poleceń i inicjowania Hosting znajdziesz w przewodniku dla początkujących użytkowników 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:
Twoje subdomeny Firebase:
PROJECT_ID.web.app/iPROJECT_ID.firebaseapp.com/wszystkie połączone własne domeny:
CUSTOM_DOMAIN/
Więcej informacji o regułach przepisywania znajdziesz na stronie konfiguracji Hosting (w języku angielskim). Możesz też dowiedzieć się więcej o kolejności priorytetów odpowiedzi w przypadku różnych konfiguracji Hosting.
Testowanie lokalne
Podczas tworzenia możesz uruchamiać i testować obraz kontenera lokalnie. Szczegółowe instrukcje znajdziesz w dokumentacji Cloud Run.
Dalsze kroki
Skonfiguruj buforowanie zawartości dynamicznej 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 o szczegółowych instrukcjach dotyczących konfigurowania kontenerów i zarządzania nimi.
Sprawdź ceny oraz limity i ograniczenia dotyczące Cloud Run.