Połącz Cloud Run z Firebase Hosting, aby generować i obsługiwać 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ływać 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 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ługiwania żądań.
Przykłady zastosowania i próbki Cloud Run zintegrowanego z Firebase Hosting znajdziesz w omówieniu technologii bezserwerowej.
Z tego przewodnika dowiesz się, jak:
- Napisz prostą aplikację Hello World
- Konteneryzowanie aplikacji i przesyłanie jej do Artifact Registry
- Wdrażanie obrazu kontenera w Cloud Run
- Kierowanie żądań Hosting bezpośrednio do aplikacji konteneryzowanej
Aby zwiększyć skuteczność wyświetlania treści dynamicznych, możesz opcjonalnie dostosować ustawienia pamięci podręcznej.
Zanim zaczniesz
Zanim zaczniesz korzystać z Cloud Run, musisz wykonać kilka wstępnych zadań, w tym skonfigurować konto Cloud Billing, włączyć interfejs Cloud Run API i zainstalować narzędzie wiersza poleceń gcloud
.
Konfigurowanie płatności w projekcie
Cloud Run oferuje bezpłatny limit wykorzystania, ale aby korzystać z Cloud Run lub ją wypróbować, musisz mieć Cloud Billingkonto powiązane z projektem Firebase.
Włączanie interfejsu API i instalowanie pakietu SDK
Włącz interfejs Cloud Run API w konsoli interfejsów API Google:
Otwórz Cloud Runstronę 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 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 tych, które są widoczne 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 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.json
o 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 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 i CURL.
Pamiętaj, że musisz to zrobić tylko po to, aby w następnym kroku utworzyć nowy projekt internetowy. Plik Dockerfile, który zostanie opisany 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 poleceń 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@RestController
do 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. Utwórz kontener aplikacji i prześlij go 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 tę treść.Go
Node.js
Python
Java
Utwórz obraz kontenera za pomocą Cloud Build, uruchamiając to polecenie z katalogu zawierającego Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Po zakończeniu operacji 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.
Zamiast Cloud Build możesz użyć lokalnie zainstalowanej wersji Dockera, aby lokalnie utworzyć kontener.
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ę odpowiedni komunikat:
- Wybierz region (np.
us-central1
). - Potwierdź nazwę usługi (np.
helloworld
). - Odpowiedz
Y
na zezwolenie 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 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 użyciem adresu URL, aby mogła generować dynamiczne treści dla Twojej witryny hostowanej w Firebase.Firebase Hosting
Krok 4. Kieruj żądania hostingu do aplikacji w kontenerze
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 skierować wszystkie żądania ze strony /helloworld
w witrynie Hosting, aby uruchamiały i uruchamiały instancję kontenera helloworld
.
Sprawdź, czy:
Zainicjowano Firebase Hosting.
Szczegółowe instrukcje instalacji interfejsu wiersza poleceń i inicjowaniaHosting znajdziesz w przewodniku Pierwsze kroki z Hosting.
Otwórz plik
firebase.json
.Dodaj tę konfigurację
rewrite
w 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
Do kontenera można teraz uzyskać dostęp za pomocą tych adresów URL:
Twoje subdomeny Firebase:
PROJECT_ID.web.app/
iPROJECT_ID.firebaseapp.com/
Wszystkie połączone domeny niestandardowe:
CUSTOM_DOMAIN/
Więcej informacji o regułach przepisywania znajdziesz na Hostingstronie konfiguracji. 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 Cloud Rundokumentacji.
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 zapoznaj się ze szczegółowymi przewodnikami dotyczącymi konfigurowania kontenerów, zarządzania nimi i ich ustawiania.