Golang runtime (#125)
Minimal golang runtime. Functions are built as Go plugins, and the plugin is uploaded to fission. See `environments/go/README.md` for instructions and `examples/go` for a usage example. For now, we're re-using the 'code' field of the function to store the binary plugin. With v2 environments, this will be stored separately as a binary package.
This commit is contained in:
committed by
Soam Vasani
parent
a3f8016442
commit
1665235c14
@@ -0,0 +1,30 @@
|
||||
# Go examples
|
||||
|
||||
The `go` runtime uses the [`plugin` package](https://golang.org/pkg/plugin/) to dynamically load an HTTP handler.
|
||||
|
||||
## Requirements
|
||||
|
||||
- go 1.8
|
||||
- A [go-runtime fission environment](environments/go/README.md)
|
||||
|
||||
## Examples
|
||||
|
||||
### hello.go
|
||||
|
||||
`hello.go` is an very basic HTTP handler returning `"Hello, World!"`.
|
||||
|
||||
|
||||
```
|
||||
# Build the function as a plugin
|
||||
$ ./build.sh
|
||||
|
||||
# Upload the function to fission
|
||||
$ fission function create --name hello --env go-runtime --package hello.so
|
||||
|
||||
# Map /hello to the hello function
|
||||
$ fission route create --method GET --url /hello --function hello
|
||||
|
||||
# Run the function
|
||||
$ curl http://$FISSION_ROUTER/hello
|
||||
Hello, World!
|
||||
```
|
||||
Executable
+8
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
|
||||
FISSION_PATH="github.com/fission/fission"
|
||||
|
||||
docker run --rm -v $GOPATH/src/$FISSION_PATH:/usr/src/$FISSION_PATH \
|
||||
-e GOPATH=/usr/ \
|
||||
-w /usr/src/$FISSION_PATH/examples/go \
|
||||
golang:1.8 go build -buildmode=plugin -o hello.so hello.go
|
||||
@@ -0,0 +1,10 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func Handler(w http.ResponseWriter, r *http.Request) {
|
||||
msg := "Hello, World!"
|
||||
w.Write([]byte(msg))
|
||||
}
|
||||
Reference in New Issue
Block a user