Połącz Cloud Run z Hostingiem Firebase, aby wygenerować i obsługiwać dynamiczne treści lub tworzenie interfejsów REST API jako mikroserwisów.
Cloud Run pozwala: wdrożysz aplikację spakowaną do obrazu kontenera. Następnie za pomocą funkcji w Hostingu Firebase, możesz kierować żądaniami HTTPS w celu aktywowania i skonteneryzowaną aplikacją.
- Cloud Run obsługuje kilka języków (w tym Go, Node.js, Python i Java) z wybranego języka i platformy programistycznej.
- Cloud Run, automatycznie i w poziomie obrazu kontenera w celu obsługi otrzymanych żądań, a następnie skaluje się w dół, maleje popyt.
- płacisz tylko za procesor, pamięci i sieci zużywanych podczas obsługi żądań.
Na przykład przypadki użycia i przykłady dotyczące Cloud Run zintegrowanego z Hosting Firebase, zapoznaj się z naszą Omówienie technologii bezserwerowych.
Z tego przewodnika dowiesz się, jak:
- Pisanie prostej aplikacji Hello World
- Przechowywanie aplikacji w kontenerze i przesyłanie jej do Container Registry
- Wdrażanie obrazu kontenera w Cloud Run
- Bezpośrednie żądania Hostingu dla skonteneryzowanej aplikacji
Pamiętaj, że aby poprawić wydajność wyświetlania treści dynamicznej, możesz: (opcjonalnie) dostosuj ustawienia pamięci podręcznej.
Zanim zaczniesz
Zanim zaczniesz używać Cloud Run, musisz wykonać kilka zadań początkowych
m.in. przez skonfigurowanie konta rozliczeniowego Cloud oraz włączenie Cloud Run
API i zainstalowanie narzędzia wiersza poleceń gcloud
.
Skonfiguruj rozliczenia w projekcie
Cloud Run zapewnia bezpłatny limit wykorzystania, ale i tak musisz mieć Konto rozliczeniowe Cloud powiązane z projektem Firebase, aby móc używać Cloud Run lub je wypróbować.
.Włącz interfejs API i zainstaluj pakiet SDK
Włącz Cloud Run API w konsoli interfejsów API Google:
Otwórz aplikację Strona Cloud Run API w konsoli interfejsów API Google.
Gdy pojawi się odpowiedni komunikat, wybierz projekt Firebase.
Kliknij Włącz na stronie Cloud Run API.
Zainstaluj i zainicjuj pakietu 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 języków wymienionych w poniższym przykładzie.
Go
Utwórz nowy katalog o nazwie
helloworld-go
, a następnie zmień katalog na :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: Container Registry.
Node.js
Utwórz nowy katalog o nazwie
helloworld-nodejs
, a następnie zmień katalog w nim:mkdir helloworld-nodejs
cd helloworld-nodejs
Utwórz plik
package.json
z 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: Container Registry.
Python
Utwórz nowy katalog o nazwie
helloworld-python
, a następnie zmień katalog w nim: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: Container Registry.
Java
Zainstaluj Java SE 8 lub nowszej JDK i CURL.
Pamiętaj, że jest to konieczne tylko do utworzenia nowego projektu internetowego w kolejny krok. Plik Dockerfile, który zostanie opisany później, wczyta wszystkie w kontenerze.
W konsoli utwórz nowy, pusty projekt internetowy przy użyciu polecenia cURL, a następnie polecenia 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 zajęcia
SpringBootApplication
wsrc/main/java/com/example/helloworld/HelloworldApplication.java
według dodaj@RestController
do obsługi mapowania/
oraz 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: Container Registry.
Krok 2. Przeprowadź konteneryzację aplikacji i prześlij ją do Container Registry
Skonteneryzujesz przykładową aplikację, tworząc nowy plik o nazwie
Dockerfile
w w tym samym katalogu co pliki źródłowe. Skopiuj tę treść do .Go
Node.js
Python
Java
Utwórz obraz kontenera za pomocą Cloud Build, uruchamiając to w katalogu zawierającym plik Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Gdy zakończy się pomyślnie, 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 można go użyć ponownie, jeśli pożądaną.
Pamiętaj, że zamiast Cloud Build możesz użyć wersji zainstalowanej lokalnie Dockera, aby utwórz 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ę komunikat:
- Wybierz region (na przykład
us-central1
) - Potwierdź nazwę usługi (np.
helloworld
) - Odpowiedz
Y
na zezwolenie na nieuwierzytelnione wywołania
- Wybierz region (na przykład
Aby uzyskać najlepszą wydajność, kolokuj usługę Cloud Run z usługą Hosting przy użyciu tych regionów:
us-west1
us-central1
us-east1
europe-west1
asia-east1
Przepisy w Cloud Run z usługi Hosting są obsługiwane w te regiony:
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
Poczekaj chwilę na zakończenie wdrażania. Kiedy operacja zostanie wykonana, wyświetla adres URL usługi. Na 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 dowiesz się, jak uzyskać dostęp do tej skonteneryzowanej aplikacji z poziomu Adres URL Hostingu Firebase, aby mógł generować zawartość dynamiczną dla Witryna hostowana w Firebase.
Krok 4. Bezpośrednie żądania hostingu do skonteneryzowanej aplikacji
Na reguły przepisywania, możesz kierować żądania pasujące do określonych wzorców w jednym miejscu docelowym.
Przykład poniżej pokazuje, jak kierować wszystkie żądania ze strony
/helloworld
w Twojej witrynie w Hostingu, aby aktywować uruchomienie i uruchomienie
instancję kontenera helloworld
.
Sprawdź, czy:
Zainicjowano Hosting Firebase.
Szczegółowe instrukcje instalowania i inicjowania interfejsu wiersza poleceń Hosting, zobacz Wprowadzenie do Hostingu.
Otwórz plik
firebase.json
.Dodaj w sekcji
hosting
tę konfiguracjęrewrite
:"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 swojej witrynie, uruchamiając to polecenie w katalogu głównym 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/
Wszystkie połączone domeny niestandardowe:
CUSTOM_DOMAIN/
Odwiedź stronę konfiguracji Hostingu dla domeny Dowiedz się więcej o regułach przepisywania. Dostępne opcje dowiedz się też więcej na temat kolejność priorytetów odpowiedzi dla różnych konfiguracji hostingu.
Przetestuj lokalnie
W trakcie programowania możesz uruchamiać i testować obraz kontenera lokalnie. Dla: szczegółowe instrukcje znajdziesz w Dokumentacja Cloud Run.
Dalsze kroki
Skonfiguruj buforowanie zawartości dynamicznej na globalnej sieci CDN.
Interakcja z innymi usługami Firebase za pomocą Pakiet SDK Firebase Admin.
Dowiedz się więcej o Cloud Run, w tym szczegółowych instrukcji konfigurowania kontenerów oraz zarządzania nimi.
Sprawdź cenę oraz limity i limity dotyczące Cloud Run.