Połącz Cloud Run z Hostingiem Firebase, aby generować i udostępniać treści dynamiczne lub tworzyć interfejsy API REST jako mikrousługi.
Korzystanie Chmura Uruchom , można wdrożyć aplikację opakowaną w obrazie pojemnika. Następnie, korzystając z Hostingu Firebase, możesz kierować żądania HTTPS, aby wyzwolić aplikację w kontenerze.
- Chmura Run obsługuje kilka języków (w tym Go, node.js, Python i Java), co daje możliwość elastycznego korzystania z języka programowania i ramy do wyboru.
- Chmura Uruchom automatycznie i poziomo wagi kontenera na zdjęcie, aby obsłużyć otrzymała wnioski, a następnie skaluje w dół, gdy popyt spada.
- Wystarczy tylko zapłacić za procesora, pamięci i sieci spożywane podczas żądanie obsługi.
Do przykładowych przypadków użycia i próbek do cloud Run zintegrowanych z Firebase Hosting, odwiedź naszą przegląd Serverless .
Ten przewodnik pokazuje, jak:
- Napisz prostą aplikację Hello World
- Konteneryzuj aplikację i prześlij ją do Container Registry
- Wdróż obraz kontenera w Cloud Run
- Kieruj żądania hostingu do swojej aplikacji w kontenerach
Należy zauważyć, że w celu poprawy wydajności służenia zawartości dynamicznej, MOŻESZ ewentualnie dostroić ustawienia cache .
Zanim zaczniesz
Przed użyciem Chmura Uruchom, należy wykonać kilka początkowych zadań, w tym utworzenie konta rozliczeniowego chmura, Chmura API umożliwiające Run i instalacji gcloud
narzędzia wiersza poleceń.
Skonfiguruj rozliczenia za swój projekt
Chmura Run oferuje bezpłatny przydział użytkowaniu , ale nadal musi mieć konto chmura Rozliczenia związane z projektem Firebase do użytku lub wypróbować Chmura Uruchom.
Włącz interfejs API i zainstaluj pakiet SDK
Włącz Cloud Run API w konsoli interfejsów Google API:
Otwórz stronę Run Chmura API w konsoli Google API.
Po wyświetleniu monitu wybierz projekt Firebase.
Kliknij Włącz na stronie Chmura Run API.
Zainstalować i zainicjować Cloud SDK.
Sprawdź, czy
gcloud
narzędzie jest skonfigurowany do prawidłowego projektu:gcloud config list
Krok 1: Wpisz przykładową aplikację
Zauważ, że chmura Run obsługuje wiele innych języków oprócz języków pokazanych na poniższym przykładzie.
Udać się
Utwórz nowy katalog o nazwie
helloworld-go
, a następnie zamieniają się w nim katalog:mkdir helloworld-go
cd helloworld-go
Utwórz nowy plik o nazwie
helloworld.go
, a następnie dodaj następujący kod:Kod ten tworzy podstawowy serwer WWW, który nasłuchuje na porcie zdefiniowane przez
PORT
zmiennej środowiskowej.
Twoja aplikacja jest gotowa i gotowa do konteneryzacji i przesłania do Container Registry.
Node.js
Utwórz nowy katalog o nazwie
helloworld-nodejs
, a następnie katalog zmian do niego:mkdir helloworld-nodejs
cd helloworld-nodejs
Tworzenie
package.json
plik o następującej treści:Utwórz nowy plik o nazwie
index.js
, a następnie dodaj następujący kod:Kod ten tworzy podstawowy serwer WWW, który nasłuchuje na porcie zdefiniowane przez
PORT
zmiennej środowiskowej.
Twoja aplikacja jest gotowa i gotowa do konteneryzacji i przesłania do Container Registry.
Pyton
Utwórz nowy katalog o nazwie
helloworld-python
, potem katalog zmian do niego:mkdir helloworld-python
cd helloworld-python
Utwórz nowy plik o nazwie
app.py
, a następnie dodaj następujący kod:Kod ten tworzy podstawowy serwer WWW, który nasłuchuje na porcie zdefiniowane przez
PORT
zmiennej środowiskowej.
Twoja aplikacja jest gotowa i gotowa do konteneryzacji i przesłania do Container Registry.
Jawa
Zainstalować Java SE 8 lub nowszej JDK i CURL .
Pamiętaj, że musimy to zrobić tylko po to, aby w następnym kroku utworzyć nowy projekt internetowy. Plik Dockerfile, który jest opisany w dalszej części, 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
Tworzy to projekt SpringBoot.
Zaktualizuj
SpringBootApplication
klasę wsrc/main/java/com/example/helloworld/HelloworldApplication.java
dodając@RestController
obsłużyć/
mapowanie i również dodać@Value
pole, aby zapewnićTARGET
zmiennej środowiskowej:Kod ten tworzy podstawowy serwer WWW, który nasłuchuje na porcie zdefiniowane przez
PORT
zmiennej środowiskowej.
Twoja aplikacja jest gotowa i gotowa do konteneryzacji i przesłania do Container Registry.
Krok 2: containerize aplikacja i przesłać go do rejestru Kontenerowym
Containerize przykładowy 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.Udać się
Node.js
Pyton
Jawa
Utwórz obraz kontenera za pomocą Cloud Build, uruchamiając następujące polecenie z katalogu zawierającego plik Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Po sukcesie zobaczysz komunikat SUKCES zawierający nazwę obrazu
(gcr.io/ PROJECT_ID /helloworld
).
Obraz kontenera jest teraz przechowywany w Container Registry i w razie potrzeby można go ponownie wykorzystać.
Zauważ, że zamiast Cloud produkcji, można użyć lokalnie zainstalowaną wersję Döcker aby zbudować swój pojemnik lokalnie .
Krok 3: Rozmieszczanie obrazu pojemnik do 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 (np
helloworld
) - Odpowiedzieć
Y
, aby umożliwić nieuwierzytelnione wywołania
- Wybierz region (na przykład
Poczekaj chwilę na zakończenie wdrażania. Po pomyślnym zakończeniu wiersz poleceń wyświetla 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.
Następnym krokiem poprowadzi Cię przez jak uzyskać dostęp do tej aplikacji w kontenerach z Firebase Hosting URL tak, że może on wygenerować dynamicznej zawartości dla Firebase-hosted miejscu.
Krok 4: bezpośrednie wnioski hosting swojej aplikacji kontenerowej
Z przepisywania zasad , można kierować wnioski, które pasują do określonych wzorców do jednego miejsca przeznaczenia.
Poniższy przykład pokazuje, jak kierować wszystkie żądania ze strony /helloworld
na swojej stronie Hosting aby wywołać uruchomienie i prowadzenie swojej helloworld
przykład pojemnika.
Upewnij się, że:
Zainicjowałeś Hosting Firebase.
Aby uzyskać szczegółowe instrukcje dotyczące instalowania CLI i inicjowanie Hosting, zobacz zacząć przewodnik Hosting .
Otwórz
firebase.json
plik .Dodaj następujący
rewrite
konfigurację podhosting
sekcji:"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 witrynie, uruchamiając następujące polecenie z katalogu głównego katalogu projektu:
firebase deploy
Twój kontener jest teraz dostępny pod następującymi adresami URL:
Twoje subdomeny Firebase:
PROJECT_ID .web.app/
iPROJECT_ID .firebaseapp.com/
Wszelkie podłączone niestandardowych domen :
CUSTOM_DOMAIN /
Odwiedź stronę konfiguracji Hosting dla więcej szczegółów na temat przepisywania zasad . Można również dowiedzieć się o kolejność priorytetów odpowiedzi dla różnych konfiguracjach hostingowych.
Przetestuj lokalnie
Podczas programowania możesz uruchomić i przetestować obraz kontenera lokalnie. Szczegółowe instrukcje można znaleźć w dokumentacji Chmura Run .
Następne kroki
Konfigurowanie buforowania z zawartością dynamiczną w sprawie globalnego CDN.
Interakcja z innymi usługami Firebase wykorzystaniem Firebase Admin SDK .
Dowiedz się więcej o chmurze Run, w tym szczegółowy jak do przewodników dla zakładania, zarządzania i konfigurowania pojemników.
Przegląd cen i limitów i ograniczeń cloud Run.