本文介绍如何在函数计算控制台上或使用Funcraft工具创建Custom Container函数。

前提条件

您已成功创建容器镜像服务企业版实例或容器镜像服务个人版实例,推荐您创建企业版实例。

使用控制台创建函数

  1. 将您的函数镜像推送至默认实例镜像仓库。

    本文以在/tmp目录中执行为例介绍如何创建函数,假设函数计算地域(Region)为华南1(深圳),镜像仓库名称nodejs-express

    1. 执行以下命令进入/tmp目录。
      cd /tmp
    2. /tmp目录中执行以下命令解压示例工程。
      git clone https://github.com/awesome-fc/custom-container-docs.git
    3. 执行以下命令进入custom-container-docs/nodejs-express目录内。
      cd custom-container-docs/nodejs-express
    4. 执行以下命令指定镜像仓库,your ACR image name需替换为您的镜像名称,假设your ACR image nameregistry.cn-shenzhen.aliyuncs.com/fc-demo/nodejs-express:v0.2
      export IMAGE_NAME="your ACR image name" 
    5. 执行以下命令打包镜像。
      docker build -t $IMAGE_NAME .
    6. 执行以下命令推送镜像。
      docker push $IMAGE_NAME
  2. 创建服务并为服务设置权限。
    1. 函数计算控制台创建服务。具体操作步骤,请参见创建服务
    2. 为目标服务绑定权限策略AliyunContainerRegistryReadOnlyAccess或者AliyunContainerRegistryFullAccess。具体操作步骤,请参见授予函数计算访问其他云产品的权限
      函数计算需要使用上述策略中的权限去获取容器镜像服务中默认实例的临时账号,然后利用该临时账号推送位于您的私有镜像仓库中的镜像。
  3. 创建函数。
    本文以创建事件函数为例,创建HTTP函数的参数设置类似。
    1. 登录函数计算控制台
    2. 在顶部菜单栏,选择地域。
    3. 在左侧导航栏,单击服务及函数
    4. 选择新增函数 > 事件函数 > 配置部署
    5. 配置函数区域,填写函数相关信息,然后单击新建
      create custom container
      参数 操作
      所在服务 在下拉列表中选择步骤2中创建的服务。
      函数名称 在文本框中填写自定义的函数名称。
      运行环境 在下拉列表中选择custom-container
      函数实例类型 在下拉列表中根据实际需要选择函数实例类型,取值:
      • 弹性实例
      • 性能实例

      实例规格的详细内容,请参见实例规格及使用模式

      容器镜像 单击选择容器镜像选择个人版企业版实例中的镜像版本。
      说明 如果您选择的是企业版实例,请保证域名默认解析地址为函数计算服务所在的VPC网络地址,目前不支持PrivateZone产品定义域名解析。
      Command 在文本框中填写启动命令,例如["/code/myserver"]

      该参数为可选参数,如果不填写,则默认使用镜像中的Entrypoint/CMD。

      Args 在文本框中填写参数,例如["-arg1", "value1"]

      该参数为可选参数,如果不填写,则默认使用镜像中的CMD。

      函数执行内存 在下拉列表中选择函数执行需要的内存大小,内存的设置不能小于512 MB。
      超时时间 在文本框中输入请求超时时间。
      单实例并发度 在文本框中输入单实例并发度。

      更多信息,请参见单实例多并发简介

      监听端口 在文本框中填写监听端口。

      该参数为可选参数,如果不填写,则默认端口为9000。您可以直接在此处修改监听端口, 无需去修改镜像。

      创建完成后,您可以在目标服务下的函数列表中看到刚创建的函数。

使用Funcraft工具创建

使用Funcraft工具可以一键构建、推送容器镜像并部署函数。

  1. 执行以下命令克隆custom-container-docs示例
    git clone https://github.com/awesome-fc/custom-container-docs.git
  2. 执行以下命令进入custom-container-docs/nodejs-express项目中。
    cd custom-container-docs/nodejs-express
  3. 编辑template.yml,参数Image的值需替换为您的ACR镜像地址。
  4. 执行以下命令构建镜像。
    fun build --use-docker
  5. 执行以下命令部署函数。
    # Deploy the function, push the image via the internet registry host (the function config uses the VPC registry for faster image pulling).
    fun deploy --push-registry acr-internet
    创建完成后,您可以登录函数计算控制台,在目标服务下的函数列表中查看刚创建的函数。