web-dev-qa-db-fra.com

Gestionnaires app.yaml App Engine pour la construction React app

J'essaie de déployer la version de production de l'application React (créée à l'aide de create-react-app) dans l'environnement flexible du moteur d'application gcloud.

Après avoir exécuté npm run build, le dossier de construction a été créé:

App directory tree

Voici mon 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]

Une fois déployée sur App Engine, la configuration de la version affiche:

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

L'application de développement est diffusée à la place de la version de production du dossier de génération. Qu'est-ce que je fais mal?

6
Tomáš Soukup

Lors du déploiement d'une application/service GAE, le répertoire contenant le fichier app.yaml De l'application/service en cours de déploiement est considéré comme le répertoire de niveau supérieur de l'application/service et le contenu de ce répertoire est ce qui est déployé. Ce qui, dans votre cas, correspond à ce que je suppose que vous appelez la version de développement.

Si vous voulez que votre répertoire build soit le répertoire principal de votre application/service, vous devez:

  • créez un fichier app.yaml dans le répertoire build (manuellement ou demandez à votre processus de génération de le faire)

    Note: vous devez ajuster les chemins dans ce fichier, car il n'y aura plus de répertoire build dans le répertoire de l'application. Ou essayez de créer à l'intérieur un lien symbolique build -> . Vers lui-même, autorisant éventuellement l'utilisation du contenu app.yaml Existant tel quel, sans ajuster les chemins (pas certain à 100%, cela fonctionnera cependant) .

  • déployez ce fichier build/app.yaml, pas celui du haut (bsn) dir.

0
Dan Cornilescu