Funfile文件中包含了一系列命令,这些命令指定了构造函数计算交付物的步骤。Funcraft工具会执行这些命令,最终产出交付物,例如完成项目开发及打包编译后需要发布的内容。本文介绍如何通过Funfile文件安装第三方依赖。
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:992b0d65136dfa63b9566b8280881bb4cf22c4f1b68155713545e4b61ada8dd9
Successfully built 992b0d65136d
Successfully tagged fun-cache-e95a9bfa-a6fa-4d70-b5b4-0084613e2b8d: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将项目部署到云端。