2017-05-25 09:39:14 -07:00
2017-05-25 09:39:14 -07:00
2017-05-18 18:59:34 +00:00
2017-05-25 03:08:40 +00:00
2017-05-18 18:59:34 +00:00
2017-05-18 18:59:34 +00:00
2017-05-22 13:00:27 -07:00
2017-05-18 18:59:34 +00:00
2017-05-15 14:04:01 -07:00
2017-05-18 18:59:34 +00:00
2017-05-15 12:00:43 -07:00
2017-05-18 18:59:34 +00:00
2017-05-15 14:04:01 -07:00
2017-05-23 10:11:30 -05:00
2017-05-18 18:59:34 +00:00
2017-05-18 18:59:34 +00:00
2017-05-15 12:00:43 -07:00

Oracle Functions

GoDoc

Welcome to Oracle Functions! The open source serverless platform.

What is Oracle Functions?

Oracle Functions is an open source serverless platform, or as we like to refer to it, Functions as a Service (FaaS) platform that you can run anywhere.

Join Our Community

TODO: Slack or Discord community.

Prequisites

  • Docker 17.05 or later installed and running
  • Logged into Docker Hub (docker login)

Installation

The following instructions apply while the project is a private repo. They'll build Oracle Functions and the CLI tool directly from the repo instead of using pre-built containers. Will be much easier once public.

# Build and Install CLI tool
cd fn
make dep # just once
make install

# Build and Run Functions Server
cd ..
make dep # just once
make run # will build as well

Write a Function

Functions are small, bite sized bits of code that do one simple thing. Forget about monoliths when using functions, just focus on the task that you want the function to perform.

The following is a Go function that just returns "Hello ${NAME}!":

package main

import (
	"encoding/json"
	"fmt"
	"os"
)

type Person struct {
	Name string
}

func main() {
	p := &Person{Name: "World"}
	json.NewDecoder(os.Stdin).Decode(p)
	fmt.Printf("Hello %v!", p.Name)
}

Copy and paste the code above into a file called func.go, then run the following commands to build your function and deploy it.

# Initilize your function, replace $USERNAME with your Docker Hub username.
fn init $USERNAME/hello
# Test it - you can pass data into it too by piping it in, eg: `cat hello.payload.json | fn run`
fn run
# Once it's ready, deploy it to your functions server (default localhost:8080)
fn apps create myapp
fn deploy myapp

Now you can call your function:

curl http://localhost:8080/r/myapp/hello

Or surf to it: http://localhost:8080/r/myapp/hello

To update your function:

# Just update your code and run:
fn deploy myapp

See the documentation for more information. And you can find a bunch of examples in various languages in the examples directory. You can also write your functions in AWS's Lambda format.

Functions UI

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

For more information, see: https://github.com/treeder/functions-ui

Writing Functions

See Writing Functions.

And you can find a bunch of examples in the /examples directory.

More Documentation

See docs/ for full documentation.

Roadmap

See milestones for detailed issues.

Want to contribute to Oracle Functions?

See contributing.

Description
The container native, cloud agnostic serverless platform.
Readme Apache-2.0 170 MiB
Languages
Go 97.4%
Shell 1.2%
Ruby 0.5%
Makefile 0.4%
Dockerfile 0.4%
Other 0.1%