Соедините Cloud Run с Firebase Hosting, чтобы создавать и обслуживать динамический контент или создавать REST API как микросервисы.
Использование облачных Run , вы можете развернуть приложение , упакованные в контейнер изображения. Затем, используя Firebase Hosting, вы можете направлять HTTPS-запросы для запуска вашего контейнерного приложения.
- Облако Run поддерживает несколько языков ( в том числе Go, Node.js, Python и Java), что дает вам возможность использовать язык программирования и рамку вашего выбора.
- Облако Run автоматически и горизонтально масштабируется ваш контейнер изображения для обработки принятых запросов, затем масштабируется вниз , когда уменьшается спрос.
- Вы только платите за процессор, память и сетевые потребляются в процессе обработки запроса.
Например прецеденты и образцы для облачного Run интегрированных с Firebase хостинга, посетите наш обзор бессерверного .
В этом руководстве показано, как:
- Напишите простое приложение Hello World
- Поместите приложение в контейнер и загрузите его в Реестр контейнеров.
- Разверните образ контейнера в Cloud Run
- Прямые запросы хостинга к вашему контейнерному приложению
Обратите внимание , что для повышения эффективности обслуживания контента динамического, вы можете дополнительно настраивать свои параметры кэша .
Прежде чем вы начнете
Перед использованием Виртуального Run, необходимо выполнить некоторые первоначальные задачи, включая создание учетной записи Billing Cloud, что позволяет API Cloud Run, и установке gcloud
инструмента командной строки.
Настройте биллинг для вашего проекта
Облако Run предлагает бесплатную квоту использования , но вы все равно должны иметь учетную запись Cloud Billing , связанную с проектом Firebase для использования или попробовать Cloud Run.
Включите API и установите SDK
Включите Cloud Run API в консоли Google API:
Открыть страницу API Облако Выполнить в консоли Google API.
При появлении запроса выберите проект Firebase.
Нажмите кнопку Включить на странице API Cloud Run.
Установить и инициализировать Виртуальный SDK.
Убедитесь , что
gcloud
инструмент настроен для правильного проекта:gcloud config list
Шаг 1: Написать образец приложения
Обратите внимание , что Cloud Run поддерживает множество других языков , в дополнении к языкам , представленным в следующем примере.
Идти
Создайте новый каталог с именем
helloworld-go
, то перейдите в каталог в него:mkdir helloworld-go
cd helloworld-go
Создайте новый файл с именем
helloworld.go
, затем добавьте следующий код:Этот код создает базовый веб - сервер , который прослушивает порт , определенный
PORT
переменного окружения.
Ваше приложение готово и готово к контейнеризации и загрузке в Реестр контейнеров.
Node.js
Создайте новый каталог с именем
helloworld-nodejs
, затем перейдите в каталог в него:mkdir helloworld-nodejs
cd helloworld-nodejs
Создать
package.json
файл со следующим содержимым:Создайте новый файл с именем
index.js
, затем добавить следующий код:Этот код создает базовый веб - сервер , который прослушивает порт , определенный
PORT
переменного окружения.
Ваше приложение готово и готово к контейнеризации и загрузке в Реестр контейнеров.
Python
Создайте новый каталог с именем
helloworld-python
, то перейдите в каталог в него:mkdir helloworld-python
cd helloworld-python
Создайте новый файл с именем
app.py
, затем добавьте следующий код:Этот код создает базовый веб - сервер , который прослушивает порт , определенный
PORT
переменного окружения.
Ваше приложение готово и готово к контейнеризации и загрузке в Реестр контейнеров.
Джава
Установка 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
переменного окружения.
Ваше приложение готово и готово к контейнеризации и загрузке в Реестр контейнеров.
Шаг 2: контейнеризации приложение и загрузить его в контейнер реестра
Контейнеризации пример приложения, создавая новый файл с именем
Dockerfile
в том же каталоге, что и исходные файлы. Скопируйте следующий контент в свой файл.Идти
Node.js
Python
Джава
Создайте образ контейнера с помощью Cloud Build, выполнив следующую команду из каталога, содержащего ваш Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
В случае успеха вы увидите сообщение УСПЕХ, содержащее имя изображения.
(gcr.io/ PROJECT_ID /helloworld
).
Образ контейнера теперь хранится в Реестре контейнеров и при желании может быть использован повторно.
Обратите внимание , что вместо Cloud Строить можно использовать локально установленную версию Докер , чтобы построить свой контейнер на месте .
Шаг 3: Развертывание контейнера изображения в облаке Run
Разверните с помощью следующей команды:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
При появлении запроса:
- Выберите регион (например ,
us-central1
) - Подтвердите имя службы (например,
helloworld
) - Ответить
Y
, чтобы разрешить неаутентифицированные вызовы
- Выберите регион (например ,
Подождите несколько секунд, пока не завершится развертывание. В случае успеха в командной строке отображается URL-адрес службы. Например:
https://helloworld- RANDOM_HASH -us-central1.a.run.appПосетите развернутый контейнер, открыв URL-адрес службы в веб-браузере.
Следующим шагом вы узнаете, как получить доступ к этой контейнерной приложение от хостинг URL Firebase так , что он может генерировать динамический контент для вашего Firebase-размещение сайта.
Шаг 4: прямые запросы хостинга для вашего контейнерного приложения
С переопределением правилами , вы можете направлять запросы , которые соответствуют определенным шаблонам к одному месту назначения.
В следующем примере показано , как направлять все запросы со страницы /helloworld
на вашем хостинг сайта , чтобы вызвать запуск и запуск вашего helloworld
экземпляра контейнера.
Убедись в том, что:
У вас есть последняя версия Firebase CLI .
Вы инициализировали хостинг Firebase.
Подробные инструкции по установке CLI и инициализации хостинга см Get Started руководства для хостинга .
Откройте
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) } } ] }
Разверните конфигурацию хостинга на своем сайте, выполнив следующую команду из корня каталога проекта:
firebase deploy
Теперь ваш контейнер доступен по следующим URL-адресам:
Ваши поддомены Firebase:
PROJECT_ID .web.app/
иPROJECT_ID .firebaseapp.com/
Любые подсоединенные пользовательские домены :
CUSTOM_DOMAIN /
Посетите хостинг страницу конфигурации для получения более подробной информации о перезаписи правил . Вы также можете узнать о приоритетном порядке ответов на различные хостинг конфигураций.
Протестируйте локально
Во время разработки вы можете запустить и протестировать свой образ контейнера локально. За более подробными инструкциями, посетите документацию Cloud Run .
Следующие шаги
Настройка кэширования вашего контента динамического на глобальной CDN.
Взаимодействие с другими Firebase услуг с использованием Firebase Admin SDK .
Узнайте больше о Cloud Run, включая подробные практические руководства по настройке, управлению и настройке контейнеров.
Просмотрите цены и квоты и лимиты для облачных Run.