Развертывание нескольких приложений из одного проекта

#node.js #next.js #gcloud

#google-app-engine #google-облачная платформа

Вопрос:

Как я могу развернуть несколько приложений с одного или разных языков / среды выполнения, созданных из одного проекта в Google Cloud App Engine?

Комментарии:

1. Итак, в чем вопрос?

2. извините за вводящий в заблуждение язык. Только что отредактировано.

3. Также проверьте, не будет ли это нарушением раздела 3.3 (d) Условий предоставления услуг: cloud.google.com/terms

4. Думаю, что нет, потому что я не собираюсь «имитировать или действовать как единое приложение, учетная запись или проект (соответственно) или иным образом получать доступ к услугам таким образом, чтобы избежать взимания платы;». Я бы все равно хотел развернуть его как два разных приложения, с разными версиями, доступными по разным URL-адресам. Во-вторых, Google Cloud предоставляет возможность развертывания нескольких сервисов в проекте: cloud.google.com/appengine/docs/standard/python /…

5. ОК. Но вам нужно предоставить гораздо больше деталей. Вам нужно несколько сервисов? Несколько приложений? Что делает ваше приложение? В чем трудности? В противном случае ответ прост (и, вероятно, бесполезен): Да — вы просто переписываете / корректируете код своего приложения по мере необходимости 🙂 Но обратите внимание, что в зависимости от особенностей вашего приложения это может быть невозможно или может потребовать много работы. Например, совместное использование хранилища данных в нескольких приложениях требует дополнительной работы, постановка задач в очередь между приложениями невозможна.

Ответ №1:

Развертывание нескольких сервисов в Google Cloud App Engine.

Создайте следующие файлы в корневом каталоге приложения

Создайте файл app.yaml с содержимым:

 runtime: nodejs14
service: default
 

Создайте myserviceone.yaml-файл с содержимым:

 runtime: nodejs14
service: myserviceone
 

Создайте файл myservicetwo.yaml с содержимым:

 runtime: nodejs14
service: myservicetwo
 

Развертывание с помощью команды

 gcloud app deploy --project your_project_id app.yaml myserviceone.yaml myservicetwo.yaml
 

Это позволит развернуть службу по умолчанию, а также мою службу один и мою службу два. Проверьте свою облачную консоль.

Вы можете получить к ним доступ с помощью:

https://myserviceone-dot-yourProjectID.appspot.com/ или http://myserviceone .yourProjectID.appspot.com/

https://myservicetwo-dot-yourProjectID.appspot.com/ или http://myservicetwo.yourProjectID.appspot.com/

Комментарии:

1. Спасибо, что поделились, это действительно помогло мне.

2. Какая-либо конкретная причина, по которой Google не позволяет указывать несколько сервисов (разделенных запятой или другим разделителем) в одном файле app.yaml для развертывания кода в нескольких сервисах?

3. как насчет composer.json и поставщика? Должен ли быть единый репозиторий поставщика, общий для всех служб, расположенный на верхнем уровне?

Ответ №2:

Сегодня App Engine имеет однозначное соответствие с проектом Google Cloud Console. Вы не можете развернуть несколько «приложений» в одном проекте. Тем не менее, вы все равно сможете делать то, что хотите, в зависимости от ваших приложений.

App Engine имеет концепцию «сервисов», которые являются независимыми аспектами вашего приложения. В вашем приложении App Engine может быть много служб, и каждая служба может иметь свой собственный язык / время выполнения и даже находиться в разных средах App Engine.

У вас может быть, скажем, служба Python в стандартной среде App Engine, которая используется для обслуживания вашего сайта simple Flask, может быть служба, которая обслуживает API, написанный на Java 8 в стандартной среде, и может быть еще одна служба, скажем Node.js запуск в гибкой среде App Engine.

Ваша служба «по умолчанию» определена в вашем app.yaml файле. Другие ваши службы могут быть определены в разных папках и могут иметь либо app.yaml определения своих служб, либо вы можете назвать их как-то иначе backend.yaml . См. Этот простой проект Python для компоновки файлов конфигурации.

Дополнительные концептуальные сведения о службах в App Engine см. в разделе Архитектура микросервисов в Google App Engine.