You need to enable JavaScript to run this app.
导航

镜像部署

最近更新时间2024.02.06 11:53:28

首次发布时间2024.02.02 11:09:54

Native 函数支持代码包部署和镜像部署两种方式。进行镜像部署前,需要自行编写 Dockerfile 文件,将开发完成的代码包构建为镜像,上传至火山引擎同地域的镜像仓库。本文为您介绍如何构建镜像。

背景信息

镜像部署包含以下流程:

  1. 构建镜像:用户自主编写 Dockerfile 文件,将开发完成的代码包构建为镜像,上传至火山引擎同地域的镜像仓库。
  2. 创建函数:函数服务会扮演该函数的服务角色(Service Role),访问火山引擎镜像仓库拉取镜像。拉取成功后,镜像将同步至函数服务。
  3. 发布函数:发布指定镜像版本后,当前服务即可接管所有请求。

前提条件

已开通火山引擎镜像仓库。已创建仓库实例并设置访问密码,已创建命名空间和 OCI 制品仓库。具体操作可参见 镜像仓库快速入门

使用限制

  • HTTP 服务要求

    • 服务需要提供一个启动脚本run.sh,该脚本必须拷贝至如下容器目录:/opt/application/run.sh

    • 服务需要在 120 秒内启动完毕,否则将会出现以下错误。

      {
          Status: "failed"
          StatusMessage: "Function cold start timeout, please check your log/code and then retry, or contact oncall"
      }
      
  • 容器内文件读写权限
    容器 run-as-user UID 设置为 root,函数服务将使用 root 运行您的容器镜像,如果您在 Dockerfile 中指定了具体的使用者,目前不会以指定的使用者运行该容器镜像。

  • 容器镜像大小限制
    容器镜像最大不能超过 1 GB。

操作步骤

  1. 在您的项目当前目录下编写 Dockerfile 文件。 下文是一个 Golang HTTP 服务的 Dockerfile 示例。
FROM golang:latest

# 把当前(宿主机上)目录下的文件复制到docker上的/opt/application目录下
COPY ./output/main /opt/application/main
COPY run.sh /opt/application/run.sh

# 设置工作目录
WORKDIR /opt/application
USER root

# 启动 docker 需要执行的文件
CMD /opt/application/run.sh
  1. 执行以下命令指定镜像仓库,IMAGE_NAME需替换为您的镜像名称。假设函数服务的地域为北京,您的镜像名称为:xxx-cn-beijing.cr.volces.com/vefaas/native-image-go:latest
# export  IMAGE_NAME=[仓库实例域名]/[命名空间]/[OCI 制品仓库]:[镜像版本号]
export IMAGE_NAME="xxx-cn-beijing.volces.com/vefaas/native-image-go:latest"
  1. 执行以下命令构建镜像。
docker build -t $IMAGE_NAME .
  1. 执行以下命令将镜像推送至镜像仓库。
export UserName="xxx" # UserName 可登录镜像仓库控制台获取
export PassWord="xxx" # PassWord 为您在前提条件中设置的镜像仓库实例访问密码
docker login --username=$UserName --password=$PassWord xxx-cn-beijing.volces.com
docker push $IMAGE_NAME

后续操作

  1. 在函数服务控制台创建函数,选择创建「Serverless 应用托管」,部署方式选择容器镜像。具体操作可参见 创建函数
  2. 将您的函数镜像和配置发布至线上。具体操作可参见 发布函数