Обработчики app.yaml App Engine для встроенного приложения React - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь развернуть производственную сборку приложения React (созданного с помощью create-реагировать-приложение) в гибкой среде движка приложений gcloud.

После запуска npm run build была создана папка сборки:

App directory tree

Это мой app.yaml:

# [START runtime]
runtime: nodejs
env: flex
# [END runtime]

# [START handlers]
handlers:
  - url: /
    static_files: build/index.html
    upload: build/index.html
  - url: /
    static_dir: build
  # [END handlers]

При развертывании в App Engine конфигурация версии показывает:

runtime: nodejs
api_version: '1.0'
env: flexible
threadsafe: true
handlers:
  - url: /
    application_readable: false
    static_files: build/index.html
    require_matching_file: false
    upload: build/index.html
  - url: '/(.*)'
    application_readable: false
    static_files: "build/\\1"
    require_matching_file: false
    upload: 'build/.*'
automatic_scaling:
  min_num_instances: 2
  max_num_instances: 20
  cpu_utilization:
    target_utilization: 0.5

Приложение для разработки обслуживается вместо рабочей версии из папки сборки.Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Измените сценарии в package.json, чтобы GAE использовал serve для обслуживания build dir вместо корневого каталога.

После развертывания GAE запустит npm start, чтобы начать обслуживание вашего приложения.Изменяя то, к чему относится скрипт start, вы можете сделать каталог build обслуживаемым по желанию.Вам придется использовать npm run local при локальной разработке с этой настройкой, так как вы изменяете то, что делает npm start.

Этот процесс требует от вас запуска npm run build перед развертыванием в GAE.Это будет обслуживать каталог build для вас, но он не будет автоматически запускать процесс сборки для вас, так что это все равно необходимо сделать для обслуживания вашего последнего кода в /src.

Источник: https://github.com/facebook/create-react-app/issues/2077

Код:

"scripts": {
  "start": "serve -s build",
  "prestart": "npm install -g serve",
  "local": "react-scripts start",
  "build": "react-scripts build",
  "test": "react-scripts test --env=jsdom",
  "eject": "react-scripts eject"
}
0 голосов
/ 06 декабря 2018

При развертывании приложения / службы GAE каталог, содержащий развертываемый файл app.yaml приложения / службы, считается каталогом верхнего уровня приложения / службы, а содержимое этого каталога - то, что развертывается.Что, в вашем случае, соответствует тому, что я подозреваю, что вы называете версией разработки.

Если вы хотите, чтобы ваш каталог build был главным каталогом вашего приложения / службы, тогда вам нужно:

  • создайте файл app.yaml в build dir (вручную или укажите процесс сборки, чтобы это сделать)

    Примечание : вам необходимо настроить путив этом файле, поскольку в каталоге приложения больше не будет каталога build.Или попробуйте создать внутри него символическую ссылку build -> ., позволяющую использовать существующее содержимое app.yaml как есть, без корректировки путей (хотя не на 100% уверен, что это будет работать).

  • развернуть этот build/app.yaml файл, а не файл из верхнего (bsn) каталога.

...