Połącz Cloud Run z Hostingiem Firebase, aby generować i wyświetlać zawartość dynamiczną, lub tworzyć interfejsy API REST jako mikroserwisy.
Za pomocą Cloud Run możesz wdrożyć aplikację spakowaną do obrazu kontenera. Następnie za pomocą Hostingu Firebase możesz kierować żądania HTTPS, które aktywują aplikację znajdującą się w kontenerze.
- Cloud Run obsługuje kilka języków (m.in. Go, Node.js, Pythona i Java), dzięki czemu możesz korzystać z wybranego języka programowania i platformy.
- Cloud Run automatycznie i w poziomie skaluje obraz kontenera w celu obsługi otrzymanych żądań, a następnie skaluje w dół, gdy zapotrzebowanie maleje.
- Płacisz tylko za procesor, pamięć i sieć wykorzystywane w trakcie obsługiwania żądań.
Przykładowe zastosowania i przykłady użycia Cloud Run zintegrowanego z Hostingiem Firebase znajdziesz w naszym omówieniu bezserwerowym.
Z tego przewodnika dowiesz się, jak:
- Napisanie prostej aplikacji Hello World
- Tworzenie kontenera aplikacji i przesyłanie jej do Container Registry
- Wdrażanie obrazu kontenera w Cloud Run
- Kierowanie żądań Hostingu do aplikacji skonteneryzowanej
Aby poprawić wydajność 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 czynności początkowych, w tym skonfigurować konto rozliczeniowe Cloud, włączyć Cloud Run API i zainstalować narzędzie wiersza poleceń gcloud
.
Skonfiguruj płatności w projekcie
Cloud Run oferuje bezpłatny limit wykorzystania, jednak aby go wypróbować lub wypróbować, musisz mieć konto rozliczeniowe Cloud powiązane z projektem Firebase.
Włączanie interfejsu API i instalowanie pakietu SDK
Włącz Cloud Run API w konsoli interfejsów API Google:
Otwórz stronę Cloud Run API w konsoli interfejsów API Google.
Gdy pojawi się taka prośba, wybierz projekt Firebase.
Na stronie Cloud Run API 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 oprócz języków pokazanych w przykładzie poniżej Cloud Run obsługuje wiele innych języków.
Go
Utwórz nowy katalog o nazwie
helloworld-go
, a następnie przenieś na niego katalog: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ą skonteneryzować i przesłać do Container Registry.
Node.js
Utwórz nowy katalog o nazwie
helloworld-nodejs
, a następnie przenieś do niego katalog:mkdir helloworld-nodejs
cd helloworld-nodejs
Utwórz plik
package.json
o tej 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ą skonteneryzować i przesłać do Container Registry.
Python
Utwórz nowy katalog o nazwie
helloworld-python
, a następnie przenieś do niego katalog: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ą skonteneryzować i przesłać do Container Registry.
Java
Zainstaluj oprogramowanie Java SE 8 lub nowszą wersję JDK i oprogramowanie CURL.
Pamiętaj, że trzeba to zrobić tylko w kolejnym kroku, aby utworzyć nowy projekt internetowy. Plik Dockerfile, który jest opisany później, wczyta do kontenera wszystkie zależności.
W konsoli utwórz nowy pusty projekt internetowy za pomocą narzędzia 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/
oraz 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 i możesz ją skonteneryzować i przesłać do Container Registry.
Krok 2. Skonteneryzuj aplikację i prześlij ją do Container Registry
Skonteneryzujesz przykładową aplikację, tworząc nowy plik o nazwie
Dockerfile
w tym samym katalogu co pliki źródłowe. Skopiuj poniższą zawartość do swojego pliku.Go
Node.js
Python
Java
Utwórz obraz kontenera za pomocą Cloud Build, uruchamiając to polecenie z katalogu zawierającego Twój plik Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Jeśli operacja się uda, wyświetli się komunikat z informacją o udanym przeprowadzeniu operacji i nazwą obrazu
(gcr.io/PROJECT_ID/helloworld
).
Obraz kontenera jest teraz przechowywany w Container 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óż przy użyciu 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
) - Odpowiedz
Y
, aby zezwolić na nieuwierzytelnione wywołania.
- Wybierz region (na przykład
Aby uzyskać najlepszą wydajność, skolokuj swoją usługę Cloud Run z Hostingiem przy użyciu tych regionów:
us-west1
us-central1
us-east1
europe-west1
asia-east1
Przepisywanie w Cloud Run z Hostingu jest obsługiwane w tych regionach:
asia-east1
asia-east2
asia-northeast1
asia-northeast2
asia-northeast3
asia-south1
asia-south2
asia-southeast1
asia-southeast2
australia-southeast1
australia-southeast2
europe-central2
europe-north1
europe-southwest1
europe-west1
europe-west12
europe-west2
europe-west3
europe-west4
europe-west6
europe-west8
europe-west9
me-central1
me-west1
northamerica-northeast1
northamerica-northeast2
southamerica-east1
southamerica-west1
us-central1
us-east1
us-east4
us-east5
us-south1
us-west1
us-west2
us-west3
us-west4
us-west1
us-central1
us-east1
europe-west1
asia-east1
Zaczekaj chwilę na zakończenie wdrożenia. Kiedy operacja się uda, w wierszu poleceń wyświetli się URL usługi. Przykład:
https://helloworld-RANDOM_HASH-us-central1.a.run.app Przejdź do wdrożonego kontenera, otwierając adres URL usługi w przeglądarce.
W następnym kroku pokażemy, jak uzyskać dostęp do skonteneryzowanej aplikacji z adresu URL Hostingu Firebase, aby móc generować treści dynamiczne na potrzeby witryny hostowanej w Firebase.
Krok 4. Przekaż żądania hostingu do aplikacji skonteneryzowanej
Dzięki regułom przepisywania możesz kierować żądania pasujące do określonych wzorców do jednego miejsca docelowego.
Z przykładu poniżej dowiesz się, jak kierować wszystkie żądania ze strony /helloworld
w witrynie Hostingu, aby aktywować uruchamianie i uruchamianie instancji kontenera helloworld
.
Sprawdź, czy:
Hosting Firebase został zainicjowany.
Szczegółowe instrukcje instalowania interfejsu wiersza poleceń i inicjowania hostowania znajdziesz w Przewodniku wprowadzającym do hostingu.
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óż w swojej witrynie konfigurację hostingu, uruchamiając to polecenie z katalogu głównego 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/
Wszelkie połączone domeny niestandardowe:
CUSTOM_DOMAIN/
Szczegółowe informacje o regułach przepisywania znajdziesz na stronie konfiguracji hostingu. Możesz też zapoznać się z priorytetem odpowiedzi dla różnych konfiguracji Hostingu.
Przetestuj lokalnie
Podczas programowania 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.
Wchodź w interakcję z innymi usługami Firebase, używając pakietu SDK Firebase Admin.
Dowiedz się więcej o Cloud Run, w tym szczegółowe instrukcje konfigurowania i zarządzania kontenerami.
Sprawdź cennik oraz limity i limity Cloud Run.