Google App Engine не развертывает две службы (кажется, переопределяют друг друга) - PullRequest
2 голосов
/ 20 июня 2019

У меня есть Django backend и Angular Frontend , и я пытаюсь развернуть их оба в приложении Google App Engine Standard как две службы в том же приложении.

Каталог выглядит так:

-backend
--cloudbuild.yaml
--app.yaml
-- ...
-frontend
--cloudbuild.yaml
--app.yaml
-- ...
-cloudbuild.yaml

Основной cloudbuild.yaml проходит через каждую папку, ищет файл cloudbuild.yaml и отправляет сборку:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: 'bash'
  args:
  - '-c'
  - |
    for d in */; do
      config="${d}cloudbuild.yaml"
      if [[ ! -f "${config}" ]]; then
        continue
      fi

      echo "Building $d ... "
      (
        gcloud builds submit $d --config=${config}
      ) &
    done
    wait

Когда я отправляю код в репозиторий Github, они успешно развертываются . Тем не менее, оба журнала показывают что-то вроде ниже:

Step #2: Beginning deployment of service [default]...
Step #2: #============================================================#
Step #2: #= Uploading 0 files to Google Cloud Storage =#
Step #2: #============================================================#
Step #2: File upload done.
Step #2: Updating service [default]...
Step #2: ................................done.
Step #2: Setting traffic split for service [default]...
Step #2: .....done.
Step #2: Deployed service [default] to [https://thisapp.appspot.com]

Так что кажется, что один переопределяет другой в качестве службы по умолчанию. Когда я захожу на страницу услуг, есть только одна служба, которая является службой по умолчанию.

Я знаю, что сначала мы должны развернуть службу по умолчанию, а затем остальные. Однако я подумал, что поскольку основной cloudbuild.yaml отправляет сборку один за другим, тогда будет служба по умолчанию, а вторая сборка создаст вторую службу.

Два других файла cloudbuild.yaml указаны ниже:

steps:

  # Install node packages
  - name: 'gcr.io/cloud-builders/npm'
    args: [ 'install' ]

  # Build productive files
  - name: 'gcr.io/cloud-builders/npm'
    args: [ 'run', 'build', '--prod']

  # Deploy to google cloud app egnine
  - name: 'gcr.io/cloud-builders/gcloud'
    args: ['app', 'deploy', '--version=prod']
steps:

  - name: 'python:3.7'                                                                                                                               
    entrypoint: python3                                                               
    args: ['-m', 'pip', 'install', '-t', '.', '-r', 'requirements.txt'] 

  - name: 'python:3.7'                                                            
    entrypoint: python3                                                           
    args: ['./manage.py', 'collectstatic', '--noinput']

  - name: 'gcr.io/cloud-builders/gcloud'
    args: ['app', 'deploy', '--version=prod']

Буду признателен, если вы поможете мне в этом.

Спасибо

1 Ответ

1 голос
/ 20 июня 2019

Это происходит потому, что в вашем файле app.yaml вы не указали тег service.Если метка службы не указана, она будет развернута как default.Например, когда вы развертываете свой веб-интерфейс, он развертывается как служба по умолчанию.И затем вы развертываете свой бэкэнд, он также развертывается как сервис по умолчанию, переопределяя существующий сервис по умолчанию.или наоборот.

Добавьте тег service в свой веб-интерфейс app.yaml:

service: frontend
runtime: nodejs10

Вы можете оставить бэкэнд в качестве службы по умолчанию, т. Е. В бэкенде app.yaml

тег службы отсутствует.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...