Funfile文件中包含了一系列命令,这些命令指定了构造函数计算交付物的步骤,Funcraft工具会执行这些步骤,最终产出交付物例如完成项目开发及打包编译后需要发布的内容。本文介绍如何通过Funfile文件安装第三方依赖。
Funfile支持的语法
Funfile支持的命令是Dockerfile的子集,Dockerfile中支持的一些命令例如COPY、RUN、ENV、USER、WORKDIR等,Funfile也都是支持的,相比较于Dockerfile命令,Funfile只需要将原来的apt-get
以及pip
安装的包前面加个fun-install
的前缀即可。
您可以通过以下两种方式执行
fun install
命令验证Funfile支持的语法。
- 将以下内容复制到Funfile文件中,函数计算可以将函数目录的package.json文件复制到容器中去执行后续操作。
RUNTIME nodejs8 COPY ./package.json . RUN npm install
- 复杂的语法例如在函数计算中安装rlang的例子,Funfile文件内容如下。
RUNTIME python3RUN fun-install apt-get install libblas3 RUN fun-install pip install pandas RUN apt-get build-dep -y r-base; \ curl -L https://fc-demo-public.oss-cn-hangzhou.aliyuncs.com/fun/examples/R-3.5.2.tar.gz | tar -zxf -; \ cd R-3.5.2 ; \ ./configure --prefix=/code/.fun/R/ --enable-R-shlib --with-blas --with-lapack ; \ make ; \ make install; RUN PATH=/code/.fun/R/bin:$PATH LD_LIBRARY_PATH=/code/.fun/root/usr/lib/libblas:$LD_LIBRARY_PATH fun-install pip install rpy2 RUN rm -rf R-3.5.2; \ rm -rf .fun/root/usr/share; \ rm -rf .fun/R/share; \ rm -rf .fun/R/lib/R/doc; \ rm -rf .fun/python/lib/python3.6/site-packages/pandas/tests; \ rm -rf .fun/R/lib/R/library/*/{help,demo,html,doc}; \ find .fun -type f -name "*.so" -exec strip --strip-all {} \;
使用Funfile的优势
- 标准化:通过Funfile描述详细的依赖安装步骤,有利于标准化开发流程。
- 便捷性:通过将Funfile文件构建而不是将具体的某些依赖提交到版本控制系统中,也更有利于函数代码的维护。
- 原生态:Funfile的编写,更接近原生体验,结合
fun install sbox
,可以先在交互式环境中进行各种尝试,然后将最终安装步骤编写到Funfile文件,这个类似于Dockerfile的编写。 - 高效性:Funfile也支持Dockerfile的Cache功能,如果项目的改动对Funfile不影响,那么Funfile可以利用Cache直接跳过相应的命令执行过程。这有助于加速Funfile的执行过程,提升开发效率。
操作步骤
- 初始化Funfile文件。
- 使用Funfile文件安装依赖。
在文档使用中是否遇到以下问题
更多建议
匿名提交