Объедините Cloud Run с Firebase Hosting чтобы создавать и обслуживать динамический контент или создавать REST API в виде микросервисов.
С помощью Cloud Run вы можете развернуть приложение, упакованное в образ контейнера. Затем, используя Firebase Hosting , вы можете направлять HTTPS-запросы для запуска вашего контейнерного приложения.
- Cloud Run поддерживает несколько языков (включая Go, Node.js, Python и Java), что дает вам возможность использовать язык программирования и платформу по вашему выбору.
- Cloud Run автоматически и горизонтально масштабирует образ контейнера для обработки полученных запросов, а затем уменьшает масштаб, когда спрос снижается.
- Вы платите только за процессор, память и сеть, использованные во время обработки запроса.
Примеры использования и примеры Cloud Run , интегрированные с Firebase Hosting , можно найти в нашем бессерверном обзоре .
В этом руководстве показано, как:
- Напишите простое приложение Hello World.
- Контейнеризируйте приложение и загрузите его в Container Registry
- Разверните образ контейнера в Cloud Run
- Запросы прямого Hosting к вашему контейнерному приложению
Обратите внимание: чтобы повысить производительность обслуживания динамического контента, вы можете дополнительно настроить параметры кэша .
Прежде чем начать
Прежде чем использовать Cloud Run , вам необходимо выполнить некоторые первоначальные задачи, включая настройку учетной записи Cloud Billing , включение API Cloud Run и установку инструмента командной строки gcloud
.
Настройте биллинг для вашего проекта
Cloud Run предлагает бесплатную квоту на использование , но для использования или опробования Cloud Run у вас все равно должен быть Cloud Billing связанный с вашим проектом Firebase.
Включите API и установите SDK
Включите Cloud Run API в консоли Google API:
Откройте страницу Cloud Run API в консоли API Google.
При появлении запроса выберите свой проект Firebase.
Нажмите «Включить» на странице Cloud Run API.
Установите и инициализируйте Cloud SDK.
Убедитесь, что инструмент
gcloud
настроен для правильного проекта:gcloud config list
Шаг 1. Напишите пример приложения.
Обратите внимание, что Cloud Run поддерживает множество других языков помимо языков, показанных в следующем примере.
Идти
Создайте новый каталог с именем
helloworld-go
и перейдите в него:mkdir helloworld-go
cd helloworld-go
Создайте новый файл с именем
helloworld.go
и добавьте следующий код:Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды
PORT
.
Ваше приложение готово к контейнеризации и загрузке в Container Registry .
Node.js
Создайте новый каталог с именем
helloworld-nodejs
, затем перейдите в него:mkdir helloworld-nodejs
cd helloworld-nodejs
Создайте файл
package.json
со следующим содержимым:Создайте новый файл с именем
index.js
и добавьте следующий код:Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды
PORT
.
Ваше приложение готово к контейнеризации и загрузке в Container Registry .
Питон
Создайте новый каталог с именем
helloworld-python
и перейдите в него:mkdir helloworld-python
cd helloworld-python
Создайте новый файл с именем
app.py
и добавьте следующий код:Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды
PORT
.
Ваше приложение готово к контейнеризации и загрузке в Container Registry .
Ява
Установите Java SE 8 или более позднюю версию JDK и CURL .
Обратите внимание, что нам нужно сделать это только для создания нового веб-проекта на следующем шаге. Dockerfile, который описан ниже, загрузит все зависимости в контейнер.
В консоли создайте новый пустой веб-проект, используя cURL, затем разархивируйте команды:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
Это создаст проект SpringBoot.
Обновите класс
SpringBootApplication
вsrc/main/java/com/example/helloworld/HelloworldApplication.java
, добавив@RestController
для обработки сопоставления/
, а также добавьте поле@Value
для предоставления переменной средыTARGET
:Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды
PORT
.
Ваше приложение готово к контейнеризации и загрузке в Container Registry .
Шаг 2. Поместите приложение в контейнер и загрузите его в Container Registry
Контейнеризируйте пример приложения, создав новый файл с именем
Dockerfile
в том же каталоге, что и исходные файлы. Скопируйте следующее содержимое в свой файл.Идти
Node.js
Питон
Ява
Создайте образ контейнера с помощью Cloud Build , выполнив следующую команду из каталога, содержащего ваш Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
В случае успеха вы увидите сообщение УСПЕХ, содержащее имя изображения.
(gcr.io/ PROJECT_ID /helloworld
).
Образ контейнера теперь хранится в Container Registry и при желании может быть использован повторно.
Обратите внимание, что вместо Cloud Build вы можете использовать локально установленную версию Docker для локальной сборки контейнера .
Шаг 3. Разверните образ контейнера в Cloud Run
Разверните с помощью следующей команды:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
При появлении запроса:
- Выберите регион (например
us-central1
) - Подтвердите имя службы (например,
helloworld
). - Ответьте
Y
, чтобы разрешить неаутентифицированные вызовы.
- Выберите регион (например
Для достижения наилучшей производительности разместите службу Cloud Run вместе с Hosting используя следующие регионы:
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
Перезапись в Cloud Run с Hosting поддерживается в следующих регионах:
-
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
Подождите несколько минут, пока развертывание завершится. В случае успеха в командной строке отображается URL-адрес службы. Например:
https://helloworld- RANDOM_HASH -us-central1.a.run.appПосетите развернутый контейнер, открыв URL-адрес службы в веб-браузере.
На следующем шаге вы узнаете, как получить доступ к этому контейнерному приложению с URL-адреса Firebase Hosting чтобы оно могло генерировать динамический контент для вашего сайта, размещенного на Firebase.
Шаг 4. Направьте запросы на хостинг в ваше контейнерное приложение.
С помощью правил перезаписи вы можете направлять запросы, соответствующие определенным шаблонам, в один пункт назначения.
В следующем примере показано, как направить все запросы со страницы /helloworld
на вашем Hosting сайте, чтобы инициировать запуск и запуск вашего экземпляра контейнера helloworld
.
Убедитесь, что:
У вас установлена последняя версия Firebase CLI .
Вы инициализировали Firebase Hosting .
Подробные инструкции по установке CLI и инициализации Hosting см. в руководстве «Начало работы с Hosting » .
Откройте файл
firebase.json
.Добавьте следующую конфигурацию
rewrite
в разделhosting
:"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) } } ] }
Разверните конфигурацию хостинга на своем сайте, выполнив следующую команду из корня каталога вашего проекта:
firebase deploy --only hosting
Благодаря этой функции вы можете гарантировать, что версия вашей службы Cloud Run для создания динамического контента вашего сайта синхронизируется с вашими статическими ресурсами Hosting и конфигурацией Hosting . Кроме того, эта функция позволяет вам просматривать ваши перезаписи в Cloud Run на каналах предварительного просмотра Hosting .
Если вы добавите
"pinTag": true
в блокrun
конфигурацииhosting.rewrites
, ваши статические ресурсы и конфигурация Hosting будут закреплены за самой последней версией службы Cloud Run на момент развертывания. Если вы откатываете версию своего сайта, редакция «закрепленного» сервиса Cloud Run также откатывается.Эта функция использует теги Cloud Run , которые имеют ограничение в 1000 тегов на сервис и 2000 тегов на регион. Это означает, что после сотен развертываний самые старые версии сайта могут перестать работать.
Теперь ваш контейнер доступен по следующим URL-адресам:
Ваши субдомены Firebase:
PROJECT_ID .web.app/
иPROJECT_ID .firebaseapp.com/
Любые подключенные персональные домены :
CUSTOM_DOMAIN /
Посетите страницу конфигурации Hosting для получения более подробной информации о правилах перезаписи . Также вы можете узнать о приоритете ответов для различных конфигураций Hosting .
Тестируйте локально
Во время разработки вы можете запускать и тестировать образ контейнера локально. Подробные инструкции можно найти в документации Cloud Run .
Следующие шаги
Настройте кеширование вашего динамического контента в глобальной CDN.
Взаимодействуйте с другими сервисами Firebase с помощью Firebase Admin SDK .
Узнайте больше о Cloud Run , включая подробные инструкции по установке, управлению и настройке контейнеров.
Ознакомьтесь с ценами , квотами и ограничениями для Cloud Run .
Объедините Cloud Run с Firebase Hosting чтобы создавать и обслуживать динамический контент или создавать REST API в виде микросервисов.
С помощью Cloud Run вы можете развернуть приложение, упакованное в образ контейнера. Затем, используя Firebase Hosting , вы можете направлять HTTPS-запросы для запуска вашего контейнерного приложения.
- Cloud Run поддерживает несколько языков (включая Go, Node.js, Python и Java), что дает вам возможность использовать язык программирования и платформу по вашему выбору.
- Cloud Run автоматически и горизонтально масштабирует образ контейнера для обработки полученных запросов, а затем уменьшает масштаб, когда спрос снижается.
- Вы платите только за процессор, память и сеть, использованные во время обработки запроса.
Примеры использования и примеры Cloud Run , интегрированные с Firebase Hosting , можно найти в нашем бессерверном обзоре .
В этом руководстве показано, как:
- Напишите простое приложение Hello World.
- Контейнеризируйте приложение и загрузите его в Container Registry
- Разверните образ контейнера в Cloud Run
- Запросы прямого Hosting к вашему контейнерному приложению
Обратите внимание: чтобы повысить производительность обслуживания динамического контента, вы можете дополнительно настроить параметры кэша .
Прежде чем начать
Прежде чем использовать Cloud Run , вам необходимо выполнить некоторые первоначальные задачи, включая настройку учетной записи Cloud Billing , включение API Cloud Run и установку инструмента командной строки gcloud
.
Настройте биллинг для вашего проекта
Cloud Run предлагает бесплатную квоту на использование , но для использования или опробования Cloud Run у вас все равно должен быть Cloud Billing связанный с вашим проектом Firebase.
Включите API и установите SDK
Включите Cloud Run API в консоли Google API:
Откройте страницу Cloud Run API в консоли Google API.
При появлении запроса выберите свой проект Firebase.
Нажмите «Включить» на странице Cloud Run API.
Установите и инициализируйте Cloud SDK.
Убедитесь, что инструмент
gcloud
настроен для правильного проекта:gcloud config list
Шаг 1. Напишите пример приложения.
Обратите внимание, что Cloud Run поддерживает множество других языков помимо языков, показанных в следующем примере.
Идти
Создайте новый каталог с именем
helloworld-go
и перейдите в него:mkdir helloworld-go
cd helloworld-go
Создайте новый файл с именем
helloworld.go
и добавьте следующий код:Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды
PORT
.
Ваше приложение готово к контейнеризации и загрузке в Container Registry .
Node.js
Создайте новый каталог с именем
helloworld-nodejs
, затем перейдите в него:mkdir helloworld-nodejs
cd helloworld-nodejs
Создайте файл
package.json
со следующим содержимым:Создайте новый файл с именем
index.js
и добавьте следующий код:Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды
PORT
.
Ваше приложение готово к контейнеризации и загрузке в Container Registry .
Питон
Создайте новый каталог с именем
helloworld-python
и перейдите в него:mkdir helloworld-python
cd helloworld-python
Создайте новый файл с именем
app.py
и добавьте следующий код:Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды
PORT
.
Ваше приложение готово к контейнеризации и загрузке в Container Registry .
Ява
Установите Java SE 8 или более позднюю версию JDK и CURL .
Обратите внимание, что нам нужно сделать это только для создания нового веб-проекта на следующем шаге. Dockerfile, который описан ниже, загрузит все зависимости в контейнер.
В консоли создайте новый пустой веб-проект, используя cURL, затем разархивируйте команды:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
Это создаст проект SpringBoot.
Обновите класс
SpringBootApplication
вsrc/main/java/com/example/helloworld/HelloworldApplication.java
, добавив@RestController
для обработки сопоставления/
, а также добавьте поле@Value
для предоставления переменной средыTARGET
:Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды
PORT
.
Ваше приложение готово к контейнеризации и загрузке в Container Registry .
Шаг 2. Поместите приложение в контейнер и загрузите его в Container Registry
Контейнеризируйте пример приложения, создав новый файл с именем
Dockerfile
в том же каталоге, что и исходные файлы. Скопируйте следующее содержимое в свой файл.Идти
Node.js
Питон
Ява
Создайте образ контейнера с помощью Cloud Build , выполнив следующую команду из каталога, содержащего ваш Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
В случае успеха вы увидите сообщение УСПЕХ, содержащее имя изображения.
(gcr.io/ PROJECT_ID /helloworld
).
Образ контейнера теперь хранится в Container Registry и при желании может быть использован повторно.
Обратите внимание, что вместо Cloud Build вы можете использовать локально установленную версию Docker для локальной сборки контейнера .
Шаг 3. Разверните образ контейнера в Cloud Run
Разверните с помощью следующей команды:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
При появлении запроса:
- Выберите регион (например
us-central1
) - Подтвердите имя службы (например,
helloworld
). - Ответьте
Y
, чтобы разрешить неаутентифицированные вызовы.
- Выберите регион (например
Для достижения наилучшей производительности разместите службу Cloud Run вместе с Hosting используя следующие регионы:
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
Перезапись в Cloud Run с Hosting поддерживается в следующих регионах:
-
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
Подождите несколько минут, пока развертывание завершится. В случае успеха в командной строке отображается URL-адрес службы. Например:
https://helloworld- RANDOM_HASH -us-central1.a.run.appПосетите развернутый контейнер, открыв URL-адрес службы в веб-браузере.
На следующем шаге вы узнаете, как получить доступ к этому контейнерному приложению с URL-адреса Firebase Hosting чтобы оно могло генерировать динамический контент для вашего сайта, размещенного на Firebase.
Шаг 4. Направьте запросы на хостинг в ваше контейнерное приложение.
С помощью правил перезаписи вы можете направлять запросы, соответствующие определенным шаблонам, в один пункт назначения.
В следующем примере показано, как направить все запросы со страницы /helloworld
на вашем Hosting сайте, чтобы инициировать запуск и запуск вашего экземпляра контейнера helloworld
.
Убедитесь, что:
У вас установлена последняя версия Firebase CLI .
Вы инициализировали Firebase Hosting .
Подробные инструкции по установке CLI и инициализации Hosting см. в руководстве «Начало работы с Hosting » .
Откройте файл
firebase.json
.Добавьте следующую конфигурацию
rewrite
в разделhosting
:"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) } } ] }
Разверните конфигурацию хостинга на своем сайте, выполнив следующую команду из корня каталога вашего проекта:
firebase deploy --only hosting
Благодаря этой функции вы можете гарантировать, что версия вашей службы Cloud Run для создания динамического контента вашего сайта синхронизируется с вашими статическими ресурсами Hosting и конфигурацией Hosting . Кроме того, эта функция позволяет вам просматривать ваши перезаписи в Cloud Run на каналах предварительного просмотра Hosting .
Если вы добавите
"pinTag": true
в блокrun
конфигурацииhosting.rewrites
, ваши статические ресурсы и конфигурация Hosting будут закреплены за самой последней версией службы Cloud Run на момент развертывания. Если вы откатываете версию своего сайта, редакция «закрепленного» сервиса Cloud Run также откатывается.Эта функция использует теги Cloud Run , которые имеют ограничение в 1000 тегов на сервис и 2000 тегов на регион. Это означает, что после сотен развертываний самые старые версии сайта могут перестать работать.
Теперь ваш контейнер доступен по следующим URL-адресам:
Ваши субдомены Firebase:
PROJECT_ID .web.app/
иPROJECT_ID .firebaseapp.com/
Любые подключенные персональные домены :
CUSTOM_DOMAIN /
Посетите страницу конфигурации Hosting для получения более подробной информации о правилах перезаписи . Также вы можете узнать о приоритете ответов для различных конфигураций Hosting .
Тестируйте локально
Во время разработки вы можете запускать и тестировать образ контейнера локально. Подробные инструкции можно найти в документации Cloud Run .
Следующие шаги
Настройте кеширование вашего динамического контента в глобальной CDN.
Взаимодействуйте с другими сервисами Firebase с помощью Firebase Admin SDK .
Узнайте больше о Cloud Run , включая подробные инструкции по установке, управлению и настройке контейнеров.
Ознакомьтесь с ценами , квотами и ограничениями для Cloud Run .
Объедините Cloud Run с Firebase Hosting чтобы создавать и обслуживать динамический контент или создавать REST API в виде микросервисов.
С помощью Cloud Run вы можете развернуть приложение, упакованное в образ контейнера. Затем, используя Firebase Hosting , вы можете направлять HTTPS-запросы для запуска вашего контейнерного приложения.
- Cloud Run поддерживает несколько языков (включая Go, Node.js, Python и Java), что дает вам возможность использовать язык программирования и платформу по вашему выбору.
- Cloud Run автоматически и горизонтально масштабирует образ контейнера для обработки полученных запросов, а затем уменьшает масштаб, когда спрос снижается.
- Вы платите только за процессор, память и сеть, использованные во время обработки запроса.
Примеры использования и примеры Cloud Run интегрированные с Firebase Hosting , см. в нашем бессерверном обзоре .
В этом руководстве показано, как:
- Напишите простое приложение Hello World.
- Контейнеризируйте приложение и загрузите его в Container Registry
- Разверните образ контейнера в Cloud Run
- Запросы прямого Hosting к вашему контейнерному приложению
Обратите внимание: чтобы повысить производительность обслуживания динамического контента, вы можете дополнительно настроить параметры кэша .
Прежде чем начать
Прежде чем использовать Cloud Run , вам необходимо выполнить некоторые первоначальные задачи, включая настройку учетной записи Cloud Billing , включение API Cloud Run и установку инструмента командной строки gcloud
.
Настройте биллинг для вашего проекта
Cloud Run предлагает бесплатную квоту на использование , но для использования или опробования Cloud Run у вас все равно должен быть Cloud Billing связанный с вашим проектом Firebase.
Включите API и установите SDK
Включите Cloud Run API в консоли Google API:
Откройте страницу Cloud Run API в консоли API Google.
При появлении запроса выберите свой проект Firebase.
Нажмите «Включить» на странице Cloud Run API.
Установите и инициализируйте Cloud SDK.
Убедитесь, что инструмент
gcloud
настроен для правильного проекта:gcloud config list
Шаг 1. Напишите пример приложения.
Обратите внимание, что Cloud Run поддерживает множество других языков помимо языков, показанных в следующем примере.
Идти
Создайте новый каталог с именем
helloworld-go
и перейдите в него:mkdir helloworld-go
cd helloworld-go
Создайте новый файл с именем
helloworld.go
и добавьте следующий код:Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды
PORT
.
Ваше приложение готово к контейнеризации и загрузке в Container Registry .
Node.js
Создайте новый каталог с именем
helloworld-nodejs
, затем перейдите в него:mkdir helloworld-nodejs
cd helloworld-nodejs
Создайте файл
package.json
со следующим содержимым:Создайте новый файл с именем
index.js
и добавьте следующий код:Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды
PORT
.
Ваше приложение готово к контейнеризации и загрузке в Container Registry .
Питон
Создайте новый каталог с именем
helloworld-python
и перейдите в него:mkdir helloworld-python
cd helloworld-python
Создайте новый файл с именем
app.py
и добавьте следующий код:Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды
PORT
.
Ваше приложение готово к контейнеризации и загрузке в Container Registry .
Ява
Установите Java SE 8 или более позднюю версию JDK и CURL .
Обратите внимание, что нам нужно сделать это только для создания нового веб-проекта на следующем шаге. Dockerfile, который описан ниже, загрузит все зависимости в контейнер.
В консоли создайте новый пустой веб-проект, используя cURL, затем разархивируйте команды:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
Это создаст проект SpringBoot.
Обновите класс
SpringBootApplication
вsrc/main/java/com/example/helloworld/HelloworldApplication.java
, добавив@RestController
для обработки сопоставления/
, а также добавьте поле@Value
для предоставления переменной средыTARGET
:Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды
PORT
.
Ваше приложение готово к контейнеризации и загрузке в Container Registry .
Шаг 2. Поместите приложение в контейнер и загрузите его в Container Registry
Контейнеризируйте пример приложения, создав новый файл с именем
Dockerfile
в том же каталоге, что и исходные файлы. Скопируйте следующее содержимое в свой файл.Идти
Node.js
Питон
Ява
Создайте образ контейнера с помощью Cloud Build , выполнив следующую команду из каталога, содержащего ваш Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
В случае успеха вы увидите сообщение УСПЕХ, содержащее имя изображения.
(gcr.io/ PROJECT_ID /helloworld
).
Образ контейнера теперь хранится в Container Registry и при желании может быть использован повторно.
Обратите внимание, что вместо Cloud Build вы можете использовать локально установленную версию Docker для локальной сборки контейнера .
Шаг 3. Разверните образ контейнера в Cloud Run
Разверните с помощью следующей команды:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
При появлении запроса:
- Выберите регион (например
us-central1
) - Подтвердите имя службы (например,
helloworld
). - Ответьте
Y
, чтобы разрешить неаутентифицированные вызовы.
- Выберите регион (например
Для достижения наилучшей производительности разместите службу Cloud Run вместе с Hosting используя следующие регионы:
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
Перезапись в Cloud Run с Hosting поддерживается в следующих регионах:
-
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
Подождите несколько минут, пока развертывание завершится. В случае успеха в командной строке отображается URL-адрес службы. Например:
https://helloworld- RANDOM_HASH -us-central1.a.run.appПосетите развернутый контейнер, открыв URL-адрес службы в веб-браузере.
На следующем шаге вы узнаете, как получить доступ к этому контейнерному приложению с URL-адреса Firebase Hosting чтобы оно могло генерировать динамический контент для вашего сайта, размещенного на Firebase.
Шаг 4. Направьте запросы на хостинг в ваше контейнерное приложение.
С помощью правил перезаписи вы можете направлять запросы, соответствующие определенным шаблонам, в один пункт назначения.
В следующем примере показано, как направить все запросы со страницы /helloworld
на вашем Hosting сайте, чтобы инициировать запуск и запуск вашего экземпляра контейнера helloworld
.
Убедитесь, что:
У вас установлена последняя версия Firebase CLI .
Вы инициализировали Firebase Hosting .
Подробные инструкции по установке CLI и инициализации Hosting см. в руководстве «Начало работы с Hosting » .
Откройте файл
firebase.json
.Добавьте следующую конфигурацию
rewrite
в разделhosting
:"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) } } ] }
Разверните конфигурацию хостинга на своем сайте, выполнив следующую команду из корня каталога вашего проекта:
firebase deploy --only hosting
Благодаря этой функции вы можете гарантировать, что версия вашей службы Cloud Run для создания динамического контента вашего сайта синхронизируется с вашими статическими ресурсами Hosting и конфигурацией Hosting . Кроме того, эта функция позволяет вам просматривать ваши перезаписи в Cloud Run на каналах предварительного просмотра Hosting .
Если вы добавите
"pinTag": true
в блокrun
конфигурацииhosting.rewrites
, ваши статические ресурсы и конфигурация Hosting будут закреплены за самой последней версией службы Cloud Run на момент развертывания. Если вы откатываете версию своего сайта, редакция «закрепленного» сервиса Cloud Run также откатывается.Эта функция использует теги Cloud Run , которые имеют ограничение в 1000 тегов на сервис и 2000 тегов на регион. Это означает, что после сотен развертываний самые старые версии сайта могут перестать работать.
Теперь ваш контейнер доступен по следующим URL-адресам:
Ваши субдомены Firebase:
PROJECT_ID .web.app/
иPROJECT_ID .firebaseapp.com/
Любые подключенные персональные домены :
CUSTOM_DOMAIN /
Посетите страницу конфигурации Hosting для получения более подробной информации о правилах перезаписи . Также вы можете узнать о приоритете ответов для различных конфигураций Hosting .
Тестируйте локально
Во время разработки вы можете запускать и тестировать образ контейнера локально. Подробные инструкции можно найти в документации Cloud Run .
Следующие шаги
Настройте кеширование вашего динамического контента в глобальной CDN.
Взаимодействуйте с другими сервисами Firebase с помощью Firebase Admin SDK .
Узнайте больше о Cloud Run , включая подробные инструкции по установке, управлению и настройке контейнеров.
Ознакомьтесь с ценами , квотами и ограничениями для Cloud Run .
Объедините Cloud Run с Firebase Hosting чтобы создавать и обслуживать динамический контент или создавать REST API в виде микросервисов.
С помощью Cloud Run вы можете развернуть приложение, упакованное в образ контейнера. Затем, используя Firebase Hosting , вы можете направлять HTTPS-запросы для запуска вашего контейнерного приложения.
- Cloud Run поддерживает несколько языков (включая Go, Node.js, Python и Java), что дает вам возможность использовать язык программирования и платформу по вашему выбору.
- Cloud Run автоматически и горизонтально масштабирует образ контейнера для обработки полученных запросов, а затем уменьшает масштаб, когда спрос снижается.
- Вы платите только за процессор, память и сеть, использованные во время обработки запроса.
Примеры использования и примеры Cloud Run , интегрированные с Firebase Hosting , можно найти в нашем бессерверном обзоре .
В этом руководстве показано, как:
- Напишите простое приложение Hello World.
- Контейнеризируйте приложение и загрузите его в Container Registry
- Разверните образ контейнера в Cloud Run
- Запросы прямого Hosting к вашему контейнерному приложению
Обратите внимание: чтобы повысить производительность обслуживания динамического контента, вы можете дополнительно настроить параметры кэша .
Прежде чем начать
Прежде чем использовать Cloud Run , вам необходимо выполнить некоторые первоначальные задачи, включая настройку учетной записи Cloud Billing , включение API Cloud Run и установку инструмента командной строки gcloud
.
Настройте биллинг для вашего проекта
Cloud Run предлагает бесплатную квоту на использование , но для использования или опробования Cloud Run у вас все равно должен быть Cloud Billing связанный с вашим проектом Firebase.
Включите API и установите SDK
Включите Cloud Run API в консоли Google API:
Откройте страницу Cloud Run API в консоли API Google.
При появлении запроса выберите свой проект Firebase.
Нажмите «Включить» на странице Cloud Run API.
Установите и инициализируйте Cloud SDK.
Убедитесь, что инструмент
gcloud
настроен для правильного проекта:gcloud config list
Шаг 1. Напишите пример приложения.
Обратите внимание, что Cloud Run поддерживает множество других языков помимо языков, показанных в следующем примере.
Идти
Создайте новый каталог с именем
helloworld-go
и перейдите в него:mkdir helloworld-go
cd helloworld-go
Создайте новый файл с именем
helloworld.go
и добавьте следующий код:Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды
PORT
.
Ваше приложение готово к контейнеризации и загрузке в Container Registry .
Node.js
Создайте новый каталог с именем
helloworld-nodejs
, затем перейдите в него:mkdir helloworld-nodejs
cd helloworld-nodejs
Создайте файл
package.json
со следующим содержимым:Создайте новый файл с именем
index.js
и добавьте следующий код:Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды
PORT
.
Ваше приложение готово к контейнеризации и загрузке в Container Registry .
Питон
Создайте новый каталог с именем
helloworld-python
и перейдите в него:mkdir helloworld-python
cd helloworld-python
Создайте новый файл с именем
app.py
и добавьте следующий код:Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды
PORT
.
Ваше приложение готово к контейнеризации и загрузке в Container Registry .
Ява
Установите Java SE 8 или более позднюю версию JDK и CURL .
Обратите внимание, что нам нужно сделать это только для создания нового веб-проекта на следующем шаге. Dockerfile, который описан ниже, загрузит все зависимости в контейнер.
В консоли создайте новый пустой веб-проект, используя cURL, затем разархивируйте команды:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
Это создаст проект SpringBoot.
Обновите класс
SpringBootApplication
вsrc/main/java/com/example/helloworld/HelloworldApplication.java
, добавив@RestController
для обработки сопоставления/
, а также добавьте поле@Value
для предоставления переменной средыTARGET
:Этот код создает базовый веб-сервер, который прослушивает порт, определенный переменной среды
PORT
.
Ваше приложение готово к контейнеризации и загрузке в Container Registry .
Шаг 2. Поместите приложение в контейнер и загрузите его в Container Registry
Контейнеризируйте пример приложения, создав новый файл с именем
Dockerfile
в том же каталоге, что и исходные файлы. Скопируйте следующее содержимое в свой файл.Идти
Node.js
Питон
Ява
Создайте образ контейнера с помощью Cloud Build , выполнив следующую команду из каталога, содержащего ваш Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
В случае успеха вы увидите сообщение УСПЕХ, содержащее имя изображения.
(gcr.io/ PROJECT_ID /helloworld
).
Изображение контейнера теперь хранится в Container Registry и может быть повторно использовать при желании.
Обратите внимание, что вместо Cloud Build вы можете использовать локально установленную версию Docker для создания контейнера локально .
Шаг 3 : Разверните изображение контейнера в Cloud Run
Развернуть с помощью следующей команды:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
При поручении:
- Выберите регион (например,
us-central1
) - Подтвердите имя службы (например,
helloworld
) - Ответьте
Y
, чтобы разрешить неаутентированные призывы
- Выберите регион (например,
Для наилучшей производительности сопоместите свой сервис Cloud Run с Hosting используя следующие регионы:
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
Перезаписывается в Cloud Run от Hosting поддерживаются в следующих регионах:
-
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
Подождите несколько мгновений, чтобы завершить развертывание. При успехе командная строка отображает URL -адрес службы. Например:
https://helloworld- RANDOM_HASH -us-central1.a.run.appПосетите развернутый контейнер, открыв URL -адрес услуг в веб -браузере.
Следующий шаг проведет вас через то, как получить доступ к этому приложению с контейнером из URL-адреса Firebase Hosting , чтобы оно могло генерировать динамический контент для вашего сайта с огненной базой.
Шаг 4: Запросы прямого хостинга в ваше приложение в контейнер
С помощью правил перезаписывания вы можете направлять запросы, которые соответствуют конкретным шаблонам с единым пунктом назначения.
В следующем примере показано, как направлять все запросы со страницы /helloworld
на вашем Hosting сайте, чтобы запустить запуск и запуск экземпляра контейнера helloworld
.
Убедитесь, что:
У вас есть последняя версия CLI Firebase .
Вы инициализировали Firebase Hosting .
Для получения подробных инструкций по установке CLI и инициализации Hosting см. Руководство по началу Hosting .
Откройте файл
firebase.json
.Добавьте следующую конфигурацию
rewrite
в разделеhosting
:"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) } } ] }
Разверните конфигурацию хостинга на ваш сайт, выполнив следующую команду из корня вашего каталога проекта:
firebase deploy --only hosting
С помощью этой функции вы можете убедиться, что пересмотр вашей службы Cloud Run для создания динамического контента вашего сайта синхронизируется с вашими статическими ресурсами Hosting и конфигурацией Hosting . Кроме того, эта функция позволяет вам предварительно просмотреть ваши переписывания в Cloud Run на каналах предварительного просмотра Hosting .
Если вы добавите
"pinTag": true
блокrun
конфигурацииhosting.rewrites
, ваши ресурсы и конфигурацию статического Hosting будут прикреплены к последнему пересмотру службы Cloud Run во время развертывания. Если вы откатаетесь от версии своего сайта, пересмотр сервиса «прикрепленного» Cloud Run также откатится.Эта функция опирается на теги Cloud Run , которые имеют предел 1000 тегов на услугу и 2000 тегов на регион. Это означает, что после сотен развертываний самые старые версии сайта могут прекратить работать.
Ваш контейнер теперь доступен через следующие URL -адреса:
Ваши субдомены Firebase:
PROJECT_ID .web.app/
иPROJECT_ID .firebaseapp.com/
Любые подключенные пользовательские домены :
CUSTOM_DOMAIN /
Посетите страницу конфигурации Hosting для получения более подробной информации о правилах переписывания . Вы также можете узнать о приоритетном порядке ответов для различных конфигураций Hosting .
Проверка локально
Во время разработки вы можете запустить и проверить изображение контейнера локально. Для получения подробных инструкций посетите документацию Cloud Run .
Следующие шаги
Установите кэширование вашего динамического контента на глобальном CDN.
Взаимодействуйте с другими службами Firebase, используя SDK Firebase Admin .
Узнайте больше о Cloud Run , включая подробные руководства по праву для настройки, управления и настройки контейнеров.
Просмотрите цены и квоты и ограничения для Cloud Run .