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

使用控制台创建

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

    假设,函数计算地域(Region)为深圳,镜像仓库名称为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. 在左侧导航栏,单击服务/函数
    4. 选择新建函数 > 事件函数 > 下一步
    5. 配置函数区域,填写函数相关信息,然后单击完成
      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工具可以一键构建、推送容器镜像并部署函数。

  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
    
    # 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
    创建完成后,您可以登录函数计算控制台,在目标服务下的函数列表中看到刚创建的函数。