Déployez une fonction PHP avec des dépendances tierces sur Function Compute en empaquetant votre code et le répertoire vendor dans un fichier ZIP. Ce guide utilise Nette\Utils comme exemple de dépendance et présente deux méthodes de déploiement : Composer via la console Function Compute, et Serverless Devs.
Préparer votre code
Configurez un répertoire local contenant le gestionnaire de votre fonction avant le déploiement.
-
Créez un répertoire nommé
mycodepour le code de votre fonction.Linux et macOS : Exécutez
mkdir -p /tmp/mycode.Windows : Créez un dossier nommé
mycode.
-
Dans le répertoire
mycode, créez le fichierindex.phpavec le contenu suivant :<?php require_once __DIR__ . '/vendor/autoload.php'; use Nette\Utils\Arrays; function handler($event, $context) { return Arrays::contains([1, 2, 3], 1); }
Méthode 1 : Utiliser Composer
Installez les dépendances localement avec Composer, empaquetez le code dans un fichier ZIP, puis téléchargez-le via la console Function Compute.
Prérequis
Avant de commencer, vérifiez que vous disposez des éléments suivants :
PHP et Composer installés, avec les droits d'exécution des commandes Composer. Consultez Composer pour les instructions d'installation.
(Facultatif) Une fonction PHP créée dans la console Function Compute. Consultez la rubrique Créer une fonction événementielle.
Installer les dépendances et déployer
-
Dans le répertoire
mycode, créez le fichiercomposer.json:{ "require": { "nette/utils": "v3.2.5" } } Dans le répertoire
mycode, exécutezcomposer installpour installer les dépendances. À la fin de la commande, Composer génère un fichiercomposer.locket un répertoirevendordansmycode. Les dépendances téléchargées sont stockées dansvendor.-
Empaquetez tous les fichiers du répertoire
mycodedans un fichier ZIP.-
Linux et macOS : Accédez au répertoire
mycodeet exécutez :zip code.zip -r ./*Remarque : Vérifiez que vous disposez des autorisations de lecture et d'écriture sur le répertoire.
Windows : Ouvrez le répertoire
mycode, sélectionnez tous les fichiers, faites un clic droit et compressez-les dans un fichier ZIP.
Remarque : Assurez-vous que
index.phpse trouve à la racine du package. -
Dans la console Function Compute, ouvrez la fonction à mettre à jour. Dans le coin supérieur droit de la page des détails de la fonction, cliquez sur Upload Code et sélectionnez le fichier ZIP. Vous pouvez également importer un fichier ZIP lors de la création d'une fonction. Consultez la rubrique Créer une fonction événementielle.
Dans l'onglet Code de la page des détails de la fonction, cliquez sur Test Function pour vérifier le déploiement.
Méthode 2 : Utiliser Serverless Devs
Utilisez Serverless Devs avec Docker pour générer et déployer votre fonction sans gérer manuellement le fichier ZIP.
Prérequis
Avant de commencer, assurez-vous d'avoir effectué les opérations suivantes :
Installer les dépendances et déployer
-
Dans le répertoire
mycode, créez le fichiers.yamlavec le contenu suivant :edition: 3.0.0 name: fcDeployApp access: "default" vars: # The global variables. region: "cn-hangzhou" resources: hello_world: component: fc3 # The name of the component. props: region: ${vars.region} # For information about how to use variables, visit https://docs.serverless-devs.com/serverless-devs/yaml#%E5%8F%98%E9%87%8F%E8%B5%8B%E5%80%BC. functionName: "testphp" description: 'this is a test' runtime: "php7.2" code: ./ handler: index.handler memorySize: 128 timeout: 30 -
Dans le répertoire
mycode, créez le fichiercomposer.json:{ "require": { "nette/utils": "^3.0" } } -
Exécutez la commande suivante pour installer les dépendances dans un conteneur Docker correspondant à l'environnement d'exécution de Function Compute :
sudo s build --use-dockerÀ la fin de la commande, Serverless Devs installe les dépendances et le code dans le répertoire
./vendor. -
Exécutez la commande suivante pour déployer la fonction :
sudo s deployUne fois la commande terminée, votre fonction est déployée sur Function Compute.
Étapes suivantes
Pour gérer les dépendances sans les empaqueter à chaque déploiement, utilisez les couches Function Compute. Consultez la rubrique Créer une couche personnalisée.