Dockerfiles for local building or running function of FC
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
commons exit after server mode end Feb 15, 2019
demos update document Feb 15, 2019
figures add local invoke function support (#3) Jul 16, 2018
java8
nodejs6
nodejs8
php7.2
python2.7 update python base image to fix libm.so version problem. Feb 1, 2019
python3.6
utils/dump add initalizer feature Nov 5, 2018
.gitignore add debug support (#11) Nov 16, 2018
.travis.yml
LATEST
Makefile
README.md
test.sh

README.md

fc-docker

Build Status

fc docker 是对线上函数运行环境的完全模拟,并且能够让您在本地编译、运行函数。

fc docker nodejs6

您能够通过 fc-docker 在本地机器开发测试您的函数,并且该函数的运行结果会与线上结果一致。

目前已经获得支持的 fc runtime 有:nodejs6、nodejs8、python2.7、python3.6、java8、php7.2。

除了可以运行您的函数,本项目还包含 runtime 对应的用于编译项目的镜像。他们包含了常用的编译工具打包工具,比如 gcc、g++、npm、maven 等。

注意:Fun 现已基于 fc-docker,推出了 fun local 子命令,用于本地运行、调试函数。体验更好,推荐优先使用 Fun。

使用条件

要使用本项目,需要首先安装 docker

示例

您可以在 demos 目录体验:

# 进入 demos/nodejs6 或者 demos/nodejs8 目录,执行下面命令分别在 nodejs6 和 nodejs8 中运行函数:

docker run --rm -v $(pwd):/code aliyunfc/runtime-nodejs6 --handler "index.handler" --event '{"some": "event"}'

# 进入 demos/python2.7 目录,执行下面命令在 python2.7 中运行函数:
docker run --rm -v $(pwd):/code aliyunfc/runtime-python2.7 --handler "index.handler" --event '{"some": "event"}'

# 进入 demos/python3.6 目录,执行下面命令在 python3.6 中运行函数:
docker run --rm -v $(pwd):/code aliyunfc/runtime-python3.6 --handler "index.handler" --event '{"some": "event"}'

# 进入 demos/php7.2 目录,执行下面命令在 php7.2 中运行函数:
docker run --rm -v $(pwd):/code aliyunfc/runtime-php7.2 --handler "index.handler" --event '{"some": "event"}'

# 进入 demos/java8 目录,执行 mvn package 打包函数,然后执行下面命令运行函数:
docker run -v $(pwd)/target/java8-1.0.0.jar:/code/java8-1.0.0.jar aliyunfc/runtime-java8 --handler "examples.Hello::handleRequest"

支持更多的长/短参数,列表如下:

短参数 长参数 参数含义
-h --handler 函数入口
--timeout 函数超时时间
-i --initializer 函数初始化入口
-e --initializationTimeout 初始化超时时间
--event 上传event
--stdin event 从 stdin 中获取
--server server 模式

build 镜像的使用方法:

# 下载 nodejs 依赖(npm rebuild)
docker run --rm -v $(pwd):/code aliyunfc/runtime-nodejs6:build

# 在 build 容器中运行自定义命令
docker run --rm -v $(pwd):/code aliyunfc/runtime-python2.7:build fun 
docker run --rm -v $(pwd):/code aliyunfc/runtime-python3.6:build fcli

# 在 build 容器中运行交互式 bash
docker run --rm -it -v $(pwd):/code aliyunfc/runtime-python2.7:build bash

环境变量

本项目支持通过环境变量定制容器的一些行为,可用的环境变量包括:

  • FC_ACCESS_KEY_ID
  • FC_ACCESS_KEY_SECRET
  • FC_SECURITY_TOKEN
  • FC_FUNCTION_NAME

使用方法为:

docker run --rm -it -e FC_ACCESS_KEY_ID=xxxxxxx -e FC_ACCESS_KEY_SECRET=xxxxxxxx -v $(pwd):/code nodejs6

build 环境中包含的依赖

  • fcli
  • fun
  • vim
  • zip
  • git
  • build-essential
  • clang
  • libgmp3-dev
  • python2.7-dev