Skip to content
/ fn Public
forked from fnproject/fn

The container native, cloud agnostic serverless platform.

License

Notifications You must be signed in to change notification settings

tuotoo/fn

 
 

Repository files navigation

Fn Project

CircleCI GoDoc Go Report Card

Fn 是一个事件驱动,开源,可在任何平台运行的 FaaS 计算平台。 主要特性:

依赖

  • Docker 17.05 或以上版本
  • Docker Hub 账号 (Docker Hub) (或其他 Docker 兼容的 registry)
  • 登录进 Docker Hub 账号: docker login

快速开始

安装 CLI 工具

命令行工具不强制安装, 但是使用它会很方便. 安装方法:

1. Homebrew - MacOS

如果你使用Mac并且使用 Homebrew 的话, 可使用以下命令安装:

brew install fn

2. Shell 脚本

在 Linux 和 MacOS 可以使用以下命令安装:

curl -LSs https://raw.githubusercontent.com/fnproject/cli/master/install | sh

这条命令会下载一个 shell 脚本并执行. 因为脚本调用了 sudo , 所以有可能需要输入密码.

3. 下载二进制文件

releases 页面下载.

运行 Fn 服务器

启动 Fn 服务器:

fn start

这条命令会使用内置的数据库和消息队列, 以单服务器模式运行 Fn. 你可以在这里查看所有的配置项. 如果你在 Windows 下运行的话, 看这里.

编写你的第一个函数

函数是只完成一个简单任务的小巧强大的代码块. 在编写函数的时候, 不需要关注架构, 只需要关注你要函数处理的任务就可以了.

首先创建一个名为 hello 的空目录,然后 cd 进去.

下面是一个把字符串打印到 STDOUT (标准输出) 的简单的 Go 程序. 把代码复制粘贴到一个文件里面, 把文件命名为 func.go .

package main

import (
  "fmt"
)

func main() {
  fmt.Println("Hello from Fn!")
}

现在运行下列 CLI 命令:

# 初始化函数
# 从上面的代码自动检测运行时, 并创建一个 func.yaml 文件
fn init

# 设置 Docker Hub 用户名
export FN_REGISTRY=<DOCKERHUB_USERNAME>

# 对函数进行测试
# 和在服务器上面一样, 函数会在一个容器中运行
fn run

# 把函数部署到 Fn 服务器上(默认为 localhost:8080)
# 这个命令还会为函数创建一个路由
fn deploy --app myapp

现在可以调用你的函数了:

curl http://localhost:8080/r/myapp/hello
# 或者:
fn call myapp /hello

或者在浏览器中: http://localhost:8080/r/myapp/hello

这样就完成了你的第一个函数的部署和调用. 更新你的函数只需要继续编写代码, 然后再次调用 fn deploy myapp 就可以了.

UI

我们还开源了个 Web UI.只需要以下命令就可以运行:

docker run --rm -it --link functions:api -p 4000:4000 -e "API_URL=http://api:8080" fnproject/ui

访问 https://github.com/fnproject/ui 查看更多信息.

更多

  • 查看我们的函数系列教程. 这个教程会通过一系列的示例演示一些 Fn 的核心功能. 我们会用大多数主流语言来编写示例代码, 是个很不错的起点教程.
  • 查看我们的完整文档
  • 查看我们的示例
  • 查看我们的YouTube 频道
  • 查看我们的API 文档

获取帮助

参与进来

及时获取信息

About

The container native, cloud agnostic serverless platform.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 96.4%
  • Shell 1.6%
  • Ruby 1.4%
  • Other 0.6%