Native 函数支持代码包部署和镜像部署两种方式。进行镜像部署前,需要自行编写 Dockerfile 文件,将开发完成的代码包构建为镜像,上传至火山引擎同地域的镜像仓库。本文为您介绍如何构建镜像。
镜像部署包含以下流程:
已开通火山引擎镜像仓库。已创建仓库实例并设置访问密码,已创建命名空间和 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。
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
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"
docker build -t $IMAGE_NAME .
export UserName="xxx" # UserName 可登录镜像仓库控制台获取 export PassWord="xxx" # PassWord 为您在前提条件中设置的镜像仓库实例访问密码 docker login --username=$UserName --password=$PassWord xxx-cn-beijing.volces.com docker push $IMAGE_NAME