gcloud не пропускает файлы корневого уровня - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь развернуть SPA в GAE. Я следую примеру конфигурации, указанному в их статическом примере веб-сайта . Моя папка проекта имеет следующую структуру:

D:\Projects\Proj1
    |-node_modules
    |-src
    |-www
    |-.babelrc
    |-.gitignore
    |-app.yaml
    |-package.json
    |-package-lock.json

и мой app.yaml выглядит следующим образом:

runtime: php55
service: frontend
api_version: 1
threadsafe: true

handlers:
- url: /
  static_files: www/index.html
  upload: www/index.html

- url: /(.*)
  static_files: www/\1
  upload: www/(.*)

Проект выводится в папку www. gcloud используется для развертывания с помощью команды gcloud app deploy app.yaml --quiet --version %DOC_VERSION% --project %GCP_PROJECT_ID% из командного файла.

Я ожидал, что gcloud скопирует и развернет файлы, которые были только в папке www, но вместо этого он начал копировать файлы aprox 10K, которые также были в папке node_modules (я прекратил процесс).

Итак, я изменил app.yaml и теперь это выглядит так:

runtime: php55
service: frontend
api_version: 1
threadsafe: true
skip_files:
    - ^node_modules$
    - ^src$
    - ^assets$
    - ^\.

handlers:
- url: /
  static_files: www/index.html
  upload: www/index.html

- url: /(.*)
  static_files: www/\1
  upload: www/(.*)

И работает как положено.

Насколько я понимаю, параметр static_files использовался инструментом gcloud для загрузки соответствующих файлов. Итак, почему он загружал файлы из не упомянутой папки? Упоминание skip_files - единственный способ правильно решить эту проблему?

1 Ответ

0 голосов
/ 13 ноября 2018

Параметр static_files в файле app.yaml указывает только каталог в качестве расположения статических файлов, чтобы платформа могла находить их при необходимости во время выполнения.

Чтобы указать, какой каталог и файлы должны илиНе следует загружать во время развертывания, определение skip_files в app.yaml является одним из вариантов.Другой вариант - создать файл .gcloudignore в корне вашего проекта (где находится app.yaml), где вы указываете файлы, которые не должны быть загружены в Google Cloud Platform.Следует тот же синтаксис, что и .gitignore.Вы можете найти пример этого в примере кода Github здесь .Обратите внимание, что вы можете использовать skip_files ИЛИ .gcloudignore, чтобы избежать конфликтов.

...