Połącz Cloud Run z Hostingiem Firebase, aby generować i udostępniać treści dynamiczne lub tworzyć interfejsy API REST jako mikrousługi.
Za pomocą Cloud Run możesz wdrożyć aplikację spakowaną w obrazie kontenera. Następnie, korzystając z Hostingu Firebase, możesz kierować żądania HTTPS, aby uruchomić aplikację w kontenerze.
- Cloud Run obsługuje kilka języków (w tym Go, Node.js, Python i Java), zapewniając elastyczność w korzystaniu z wybranego języka programowania i platformy.
- Cloud Run automatycznie i poziomo skaluje obraz kontenera, aby obsłużyć otrzymane żądania, a następnie zmniejsza skalę, gdy popyt spada.
- Płacisz tylko za procesor, pamięć i sieć zużytą podczas obsługi żądania.
Na przykład przypadki użycia i przykłady dla Cloud Run zintegrowanego z Hostingiem Firebase znajdziesz w naszym przeglądzie bezserwerowym .
Ten przewodnik pokazuje, jak:
- Napisz prostą aplikację Hello World
- Konteneryzuj aplikację i przesyłaj ją do Container Registry
- Wdróż obraz kontenera w Cloud Run
- Żądania hostingu bezpośredniego do aplikacji w kontenerze
Pamiętaj, że aby poprawić wydajność udostępniania treści dynamicznych, możesz opcjonalnie dostosować ustawienia pamięci podręcznej .
Zanim zaczniesz
Zanim zaczniesz korzystać z Cloud Run, musisz wykonać kilka początkowych zadań, w tym skonfigurować konto rozliczeniowe Cloud Run, włączyć interfejs Cloud Run API i zainstalować narzędzie wiersza poleceń gcloud
.
Skonfiguruj rozliczenia dla swojego projektu
Cloud Run oferuje bezpłatne limity użytkowania , ale nadal musisz mieć konto rozliczeniowe Cloud powiązane z projektem Firebase, aby używać lub wypróbować Cloud Run.
Włącz interfejs API i zainstaluj zestaw SDK
Włącz Cloud Run API w konsoli Google APIs:
Otwórz stronę Cloud Run API w konsoli Google APIs.
Po wyświetleniu monitu wybierz swój projekt Firebase.
Kliknij Włącz na stronie Cloud Run API.
Zainstaluj i zainicjuj Cloud SDK.
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 pokazanych w poniższym przykładzie.
Iść
Utwórz nowy katalog o nazwie
helloworld-go
, a następnie zmień na niego katalog:mkdir helloworld-go
cd helloworld-go
Utwórz nowy plik o nazwie
helloworld.go
, a następnie dodaj następujący kod:Ten kod tworzy podstawowy serwer WWW, który nasłuchuje na porcie zdefiniowanym przez zmienną środowiskową
PORT
.
Twoja aplikacja jest gotowa do przeniesienia do kontenera i przesłania do Container Registry.
Node.js
Utwórz nowy katalog o nazwie
helloworld-nodejs
, a następnie zmień na niego katalog:mkdir helloworld-nodejs
cd helloworld-nodejs
Utwórz plik
package.json
o następującej zawartości:Utwórz nowy plik o nazwie
index.js
, a następnie dodaj następujący kod:Ten kod tworzy podstawowy serwer WWW, który nasłuchuje na porcie zdefiniowanym przez zmienną środowiskową
PORT
.
Twoja aplikacja jest gotowa do przeniesienia do kontenera i przesłania do Container Registry.
Pyton
Utwórz nowy katalog o nazwie
helloworld-python
, a następnie zmień na niego katalog:mkdir helloworld-python
cd helloworld-python
Utwórz nowy plik o nazwie
app.py
, a następnie dodaj następujący kod:Ten kod tworzy podstawowy serwer WWW, który nasłuchuje na porcie zdefiniowanym przez zmienną środowiskową
PORT
.
Twoja aplikacja jest gotowa do przeniesienia do kontenera i przesłania do Container Registry.
Jawa
Zainstaluj Java SE 8 lub nowszą wersję JDK i CURL .
Pamiętaj, że musimy to zrobić tylko w celu utworzenia nowego projektu internetowego w następnym kroku. 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ą cURL, a następnie rozpakuj polecenia:
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 zapewnić zmienną środowiskowąTARGET
:Ten kod tworzy podstawowy serwer WWW, który nasłuchuje na porcie zdefiniowanym przez zmienną środowiskową
PORT
.
Twoja aplikacja jest gotowa do przeniesienia do kontenera i przesłania do Container Registry.
Krok 2 : skonteneryzuj aplikację i prześlij ją do Container Registry
Konteneryzuj przykładową aplikację, tworząc nowy plik o nazwie
Dockerfile
w tym samym katalogu co pliki źródłowe. Skopiuj następującą zawartość do swojego pliku.Iść
Node.js
Pyton
Jawa
Zbuduj obraz kontenera za pomocą Cloud Build, uruchamiając następujące polecenie z katalogu zawierającego plik Docker:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Po pomyślnym zakończeniu zobaczysz komunikat SUKCES zawierający nazwę obrazu
(gcr.io/ PROJECT_ID /helloworld
).
Obraz kontenera jest teraz przechowywany w Container Registry i może być ponownie użyty w razie potrzeby.
Pamiętaj, że zamiast Cloud Build możesz użyć lokalnie zainstalowanej wersji Dockera do lokalnego zbudowania kontenera .
Krok 3 : Wdróż obraz kontenera w Cloud Run
Wdróż za pomocą następującego polecenia:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
Gdy pojawi się monit:
- Wybierz region (na przykład
us-central1
) - Potwierdź nazwę usługi (na przykład
helloworld
) - Odpowiedz
Y
, aby zezwolić na nieuwierzytelnione wywołania
- Wybierz region (na przykład
Poczekaj kilka chwil na zakończenie wdrażania. W przypadku powodzenia w wierszu polecenia zostanie wyświetlony adres URL usługi. Na przykład:
https://helloworld- RANDOM_HASH -us-central1.a.run.appOdwiedź wdrożony kontener, otwierając adres URL usługi w przeglądarce internetowej.
W następnym kroku dowiesz się, jak uzyskać dostęp do tej konteneryzowanej aplikacji z adresu URL Hostingu Firebase , aby mogła ona generować zawartość dynamiczną dla Twojej witryny hostowanej przez Firebase.
Krok 4: kieruj żądania hostingu do aplikacji w kontenerze
Dzięki regułom 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 hostingu, aby wyzwolić uruchamianie i uruchamianie wystąpienia kontenera helloworld
.
Upewnić się, że:
Hosting Firebase został zainicjowany.
Aby uzyskać szczegółowe instrukcje dotyczące instalowania interfejsu wiersza polecenia i inicjowania hostingu, zapoznaj się z przewodnikiem wprowadzającym dotyczącym hostingu .
Otwórz plik
firebase.json
.Dodaj następującą 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) } } ] }
Wdróż konfigurację hostingu w swojej witrynie, uruchamiając następujące polecenie z katalogu głównego katalogu projektu:
firebase deploy
Twój kontener jest teraz dostępny za pośrednictwem następujących adresów URL:
Twoje subdomeny Firebase:
PROJECT_ID .web.app/
iPROJECT_ID .firebaseapp.com/
Wszelkie połączone domeny niestandardowe :
CUSTOM_DOMAIN /
Odwiedź stronę konfiguracji hostingu, aby uzyskać więcej informacji o regułach przepisywania . Możesz również dowiedzieć się o kolejności priorytetów odpowiedzi dla różnych konfiguracji Hostingu.
Testuj lokalnie
Podczas opracowywania możesz uruchamiać i testować obraz kontenera lokalnie. Szczegółowe instrukcje znajdziesz w dokumentacji Cloud Run .
Następne kroki
Skonfiguruj buforowanie zawartości dynamicznej w globalnej sieci CDN.
Interakcja z innymi usługami Firebase przy użyciu pakietu Firebase Admin SDK .
Dowiedz się więcej o Cloud Run, w tym szczegółowe instrukcje dotyczące konfigurowania kontenerów, zarządzania nimi i zarządzania nimi.
Zapoznaj się z cenami oraz przydziałami i limitami Cloud Run.