L'hébergement APP fournit une prise en charge de construction et de déploiement sans configuration pour les applications Web développées dans ces frameworks:
Ce dépôt contient le code des adaptateurs qui permettent la prise en charge de ces cadres. À un niveau élevé, ces adaptateurs transforment les configurations spécifiques au cadre en une spécification de bundle de sortie que l'hébergement d'applications peut utiliser pour configurer la prise en charge des frameworks. Pour plus d'informations, voir l'intégration du cadre.
Le bundle de sortie de l'hébergement d'App est une spécification basée sur des fichiers qui permet à différents frameworks de configurer et de personnaliser leur déploiement d'hébergement d'applications pour une prise en charge améliorée.
Tout cadre qui peut générer une sortie de build conformément au bundle de sortie de l'hébergement de l'APP peut être déployé sur l'hébergement de l'APP.
Le bundle de sortie se compose principalement d'un fichier bundle.yaml qui se trouve à l'intérieur du .apphosting . Ce bundle.yaml contient toutes les façons dont les cadres peuvent configurer l'hébergement d'applications lorsque les utilisateurs déploient leurs applications.
Note
L'hébergement d'App prend en charge techniquement toutes les applications de nœuds, mais aucune fonctionnalité de framework personnalisée ne sera activée sans le bundle de sortie.
Le bundle de sortie est contenu dans un seul fichier:
.apphosting/bundle.yamlTant que ce fichier existe et suit le schéma, l'hébergement de l'APP sera en mesure de traiter correctement la construction.
Le schéma peut également être trouvé dans Source
interface OutputBundle {
version : "v1"
runConfig : RunConfig ;
metadata : Metadata ;
} La version représente la version de sortie du bundle qui est actuellement utilisée. La version actuelle est v1.
Les champs runConfig configurent le service Cloud Run associé au backend d'hébergement de l'APP.
interface RunConfig {
runCommand : string ;
environmentVariables ?: EnvVarConfig [ ] ;
concurrency ?: number ;
cpu ?: number ;
memoryMiB ?: number ;
minInstances ?: number ;
maxInstances ?: number ;
}| Champ | Taper | Description | Requis? |
|---|---|---|---|
runCommand | string | Commande pour démarrer le serveur (par exemple node dist/index.js ). Supposons que cette commande soit exécutée à partir du dir root de l'espace de travail. Il devrait s'agir de la version production de la commande de démarrage du serveur. | y |
environmentVariables | EnvVarConfig[] | Variables d'environnement présentes dans l'environnement d'exécution du serveur. | n |
concurrency | number | Le nombre maximal de demandes simultanées que chaque instance de serveur peut recevoir. | n |
cpu | number | Le nombre de CPU utilisés dans une instance de serveur unique. | n |
memoryMiB | number | La quantité de mémoire disponible pour une instance de serveur. | n |
minInstance | number | La limite du nombre minimum d'instances de fonction qui peuvent coexister à un moment donné. | n |
MaxInstance | number | La limite du nombre maximum d'instances de fonction qui peuvent coexister à un moment donné. | n |
Beaucoup de ces champs sont partagés avec apphosting.yaml . Voir la documentation de référence RunConfig pour un contexte supplémentaire et des valeurs par défaut.
interface EnvVarConfig {
variable : string ;
value : string ;
availability : 'RUNTIME'
}| Champ | Taper | Description | Requis? |
|---|---|---|---|
variable | string | Nom de la variable d'environnement | y |
value | string | Valeur associée à la variable d'environnement | y |
availability | RUNTIME | Où la variable sera disponible. Pour l'instant, ce sera toujours RUNTIME | y |
interface Metadata {
adapterPackageName : string ;
adapterVersion : string ;
framework : string ;
frameworkVersion ?: string ;
}| Champ | Taper | Description | Requis? |
|---|---|---|---|
adapterPackageName | string | Nom de l'adaptateur (ce devrait être le nom du package NPM) | y |
adapterVersion | string | Version de l'adaptateur | y |
framework | string | Nom du cadre qui est pris en charge | y |
frameworkVersion | string | Version du cadre qui est pris en charge | n |
Voici un exemple de fichier bundle.yaml assemblant tout cela:
> cat .apphosting/bundle.yaml
version: v1
runConfig:
runCommand:
- node
- dist/index.js
environmentVariables:
- variable: VAR
value: 8080
availability: RUNTIME
concurrency: 80
cpu: 2
memoryMiB: 512
minInstances: 0
maxInstances: 14
metadata:
adapterNpmPackageName: npm-name
adapterVersion: 12.0.0
frameworkNpmPackageName: framework-name
adapterVersion: 1.0.0
Tant que vous disposez du bundle.yaml dans ce format, l'hébergement d'App pourra déployer tout cadre qui prend en charge le rendu côté serveur.