Funfile文件中包含了一系列命令,这些命令指定了构造函数计算交付物的步骤。Funcraft会执行这些命令,最终产出交付物,例如完成项目开发及打包编译后需要发布的内容。本文介绍如何通过Funfile文件安装第三方依赖。
前提条件
您已完成以下操作:
安装并配置Funcraft
安装并配置Docker
注意 本文介绍的内容后期将不再维护。如果您的函数计算资源是使用Funcraft管理的,建议您将资源迁移至Serverless Devs管理。
关于如何将函数计算的相关资源从Funcraft迁移到Serverless Devs进行管理的详细操作,请参见从Funcraft迁移到Serverless Devs。
关于Serverless Devs的详细信息,请参见什么是Serverless Devs。
关于如何使用Serverless Devs安装依赖,请参见多语言安装依赖示例。
由此带来的不便,敬请谅解!
Funfile支持的语法
Dockerfile支持的命令,例如COPY、RUN、ENV、USER和WORKDIR等,Funfile也同样支持。Dockerfile用于构造Docker镜像,Funfile可以用于构造函数计算的交付产物。您可以通过安装rlang了解Funfile支持的一些语法命令,详细信息,请参见rlang。
相较于Dockerfile命令,Funfile只需要在原来的apt-get及pip安装包的命令前加fun-install前缀即可。
使用Funfile的优势
标准化:通过Funfile文件描述安装依赖的详细步骤,有利于标准化开发流程。
便捷性:通过构建Funfile文件而不是将具体的某些依赖提交到版本控制系统中,也更有利于函数代码的维护。
原生态:Funfile文件的编写,与Dockerfile的编写类似,却更接近原生体验。结合fun install sbox,您可以先在交互式环境中进行各种尝试,然后将最终安装步骤编写到Funfile文件内。
高效性:Funfile也支持Dockerfile的Cache功能,如果项目的改动对Funfile不影响,那么Funfile可以利用Cache直接跳过相应的命令执行过程。这有助于加速对Funfile文件的执行过程,提升开发效率。
操作步骤
构建Funfile文件。
在项目目录中执行fun install init命令,初始化构建安装Funfile文件。
选择函数的运行环境。? Select a runtime (Use arrow keys)
> nodejs6
nodejs8
nodejs10
nodejs12
python2.7
python3
java8
(Move up and down to reveal more choices)
以安装python2.7为例,介绍如何安装第三方依赖。当选择python2.7后,会在当前目录中生成一个名为Funfile的文件,内容如下:RUNTIME python2.7
说明 由于Funfile是一个文本文件,您可以直接创建Funfile的文件,按需修改运行环境。
使用Funfile文件安装pip依赖。
安装PIP依赖时需要修改Funfile文件,内容如下。RUNTIME python2.7
RUN fun-install pip install flask
说明 如果需要安装APT依赖,您只需将pip修改为apt-get即可。
执行以下命令安装依赖。fun install预期输出:using template: template.yml
start installing function dependencies without docker
building pyzbar-srv/pyzbar-fun
Funfile exist, Fun will use container to build forcely
Step 1/2 : FROM aliyunfc/runtime-python3.6:build-1.6.1
---> 2110e9fa9393
Step 2/2 : RUN fun-install pip install flask
---> Using cache
---> 992b0d65136d
sha256:992b0d65136dfa63b9566b8280881bb4cf22c4f1b68155713545e4b61ada****
Successfully built 992b0d65136d
Successfully tagged fun-cache-e95a9bfa-a6fa-4d70-b5b4-0084613e****:latest
copying function artifact to /Users/tan/code/fun/examples/install/pyzbar_example
could not find any manifest file for pyzbar-srv/pyzbar-fun, [install] stage for manifest will be skipped
Tips for next step
======================
* Invoke Event Function: fun local invoke
* Invoke Http Function: fun local start
* Build Http Function: fun build
* Deploy Resources: fun deploy
更多信息
执行fun install命令后会将依赖安装到代码目录中。同时,您可以通过fun local的相关命令进行本地调试,也可以通过fun deploy将项目部署到云端。相关信息,请参见使用fun local实现本地调试及使用fun deploy部署应用。