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

使用控制台创建

  1. 执行以下命令将您的函数镜像推送至默认实例镜像仓库。

    本例中函数计算地域为华南1(深圳),镜像仓库名称为nodejs-express

    cd /tmp
    git clone https://github.com/awesome-fc/custom-container-docs.git && cd custom-container-docs/nodejsexpress
    #指定ACR镜像地址。
    export IMAGE_NAME="your ACR image name"  # e.g. registry.cn-shenzhen.aliyuncs.com/fc-demo/nodejs-express:v0.2
    docker build -t $IMAGE_NAME .
    docker push $IMAGE_NAME
  2. 创建服务并为服务设置权限。
    1. 在创建服务,具体信息,请参见创建服务
    2. 为目标服务绑定权限策略AliyunContainerRegistryReadOnlyAccess或者AliyunContainerRegistryFullAccess,具体信息,请参见配置服务权限
      说明 函数计算需要使用上述策略中的权限去获取容器镜像服务中默认实例的临时账号,然后利用该临时账号推送位于您的私有镜像仓库中的镜像。
  3. 创建函数。
    本文以创建事件函数为例,创建HTTP函数的参数设置类似。
    1. 在左侧导航栏,单击服务/函数
    2. 选择新建函数 > 事件函数 > 下一步
    3. 配置函数区域,填写函数相关信息,然后单击完成
      create custom container
      参数 操作
      所在服务 在下拉列表中选择步骤2中创建的服务。
      函数名称 在文本框中填写自定义的函数名称。
      运行环境 在下拉列表中选择custom-container
      容器镜像 在文本框中填写容器镜像的地址。

      建议填写VPC网络地址registry-vpc.Endpoint,例如registry-vpc.cn-hangzhou.aliyuncs.com/fc-demo/helloworld:v1beta1。

      Command 在文本框中填写启动命令,例如["/code/myserver"]

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

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

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

      函数执行内存 在下拉列表中选择函数执行需要的内存大小,内存的设置不能小于521 MB。
      超时时间 在文本框中输入请求超时时间。
      单实例并发度 在文本框中输入单实例并发度。 更多信息,请参见单实例多并发简介
      监听端口 在文本框中填写监听端口。

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

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

使用Funcraft工具创建

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

注意 请使用3.6.18及以上版本的Funcraft工具,下载地址请参见Funcraft工具
  1. 执行以下命令克隆custom-container-docs示例
    git clone https://github.com/awesome-fc/custom-container-docs.git
    cd custom-container-docs/nodejsexpress
  2. 编辑template.yml,将参数Image的值替换成您的ACR镜像地址。
  3. 执行以下命令构建镜像,部署函数。
    # Build the Docker image.
    fun build --use-docker
    # Login ACR registy for the region, e.g.registry.cn-hangzhou-aliyunzcs.com.
    docker login {acr_domain}
    # 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
    创建完成后,您可以登录,在目标服务下的函数列表中看到刚创建的函数。