部署代码包

本文以第三方依赖Nette\Utils为例,介绍如何为您的PHP代码安装依赖、打包代码并部署至函数计算

准备工作

  1. 创建一个用于测试的代码目录,如mycode

    • Linux或macOS系统

      您可以执行mkdir -p /tmp/mycode创建。

    • Windows系统

      在任意位置新建文件夹,并将其命名为mycode即可。

  2. mycode目录下,建立index.php文件。

    文件内容如下。

    <?php
    
    require_once __DIR__ . '/vendor/autoload.php';
    
    use Nette\Utils\Arrays;
    
    function handler($event, $context) {
        return Arrays::contains([1, 2, 3], 1);
    }

使用Composer安装依赖并部署

前提条件

操作步骤

  1. mycode目录下创建文件composer.json

    内容如下:

    {
      "require": {
        "nette/utils": "v3.2.5"
      }
    }
  2. mycode目录下执行命令composer install下载依赖。

    执行完成后,在该目录下自动生成文件composer.lock和目录vendorvendor目录下包括已下载的依赖。

  3. 打包mycode目录下所有文件。

    • Linux或macOS系统

      进入mycode目录,执行zip code.zip -r ./*

      说明

      请确保您具有该目录的读写权限。

    • Windows系统

      进入mycode目录,选中所有文件,单击鼠标右键,选择打包为ZIP包。

    说明

    请确保您创建的index.php文件位于包的根目录。

  4. 函数计算控制台找到目标函数,然后在函数详情页面的右上角,单击上传代码上传您上一步打包的ZIP包。

    您也可以选择在函数计算控制台创建新的函数的同时上传ZIP包。具体操作步骤,请参见创建事件函数

  5. 在函数详情的代码页签,单击测试函数

使用Serverless devs工具安装依赖并部署

前提条件

操作步骤

  1. mycode目录下编写s.yaml文件。

    文件内容示例如下。

    edition: 3.0.0
    name: fcDeployApp
    access: "default"
    
    vars: # 全局变量
      region: "cn-hangzhou"
    
    resources:
      hello_world:
        component: fc3 # 组件名称
        props:
          region: ${vars.region}              # 关于变量的使用方法,可以参考: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  
  2. mycode目录下,新增composer.json文件。

    编写文件内容如下。

    {
        "require": {
            "nette/utils": "^3.0"
        }
    }
  3. 执行sudo s build --use-docker安装依赖。

    执行完成后,会将依赖和相关代码部署到./vendor目录。

  4. 执行sudo s deploy部署项目。

    执行完成后,即可部署函数到函数计算

更多信息

您也可以使用函数计算的层功能安装依赖。具体操作,请参见创建自定义层