Polish the Golang demo with Gin web framework
This commit is contained in:
		
							parent
							
								
									c1911e6585
								
							
						
					
					
						commit
						c27a94194f
					
				| @ -1,20 +1,25 @@ | |||||||
| # Use Golang with Occlum | # Use Golang with Occlum | ||||||
| 
 | 
 | ||||||
| This project demonstrates how Occlum enables [Golang](https://golang.org) programs running in SGX enclaves. | This project demonstrates how Occlum enables [Golang](https://golang.org) programs running in SGX enclaves, the demo program is a HTTP web server based on a widely used web framework([Gin](https://gin-gonic.com)) for Go. | ||||||
| 
 | 
 | ||||||
| Step 1: Build Golang web server program using the Occlum Golang toolchain(i.e., `occlum-go`) | Step 1: Install Gin with `occlum-go`, it may take a few minutes | ||||||
|  | ``` | ||||||
|  | occlum-go get -u -v github.com/gin-gonic/gin | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Step 2: Build the Golang web server using the Occlum Golang toolchain(i.e., `occlum-go`) | ||||||
| ``` | ``` | ||||||
| occlum-go build -o web_server -buildmode=pie ./web_server.go | occlum-go build -o web_server -buildmode=pie ./web_server.go | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Step 2: You can run the web server demo on Occlum via | Step 3: You can run the web server demo on Occlum via | ||||||
| ``` | ``` | ||||||
| ./run_golang_on_occlum.sh | ./run_golang_on_occlum.sh | ||||||
| ``` | ``` | ||||||
| The HTTP web server should now start to listen on port 8090 and serve HTTP requests. | The HTTP web server should now start to listen on port 8090 and serve HTTP requests. | ||||||
| 
 | 
 | ||||||
| Step 3: To check whether the HTTP server works, run | Step 4: To check whether the HTTP server works, run | ||||||
| ``` | ``` | ||||||
| curl http://127.0.0.1:8090/hello1 | curl http://127.0.0.1:8090/ping | ||||||
| ``` | ``` | ||||||
| in another terminal, and get the response "hello,1". | in another terminal, and get the response `{"message":"pong"}`. | ||||||
|  | |||||||
| @ -16,8 +16,8 @@ fi | |||||||
| rm -rf occlum_context && mkdir occlum_context | rm -rf occlum_context && mkdir occlum_context | ||||||
| cd occlum_context | cd occlum_context | ||||||
| occlum init | occlum init | ||||||
| jq '.vm.user_space_size = "320MB"' Occlum.json > temp_Occlum.json | jq '.vm.user_space_size = "380MB"' Occlum.json > temp_Occlum.json | ||||||
| jq '.process.default_mmap_size = "256MB"' temp_Occlum.json > Occlum.json | jq '.process.default_mmap_size = "300MB"' temp_Occlum.json > Occlum.json | ||||||
| 
 | 
 | ||||||
| # 2. Copy program into Occlum Workspace and build | # 2. Copy program into Occlum Workspace and build | ||||||
| cp ../web_server image/bin | cp ../web_server image/bin | ||||||
|  | |||||||
| @ -1,29 +1,26 @@ | |||||||
| package main | package main | ||||||
| 
 | 
 | ||||||
| import "net/http" | import ( | ||||||
| import "log" |     "io" | ||||||
| import "flag" |     "os" | ||||||
| import "fmt" |  | ||||||
| 
 | 
 | ||||||
| type Controller struct {} |     "github.com/gin-gonic/gin" | ||||||
| func (c Controller)ServeHTTP(writer http.ResponseWriter, request *http.Request){ | ) | ||||||
|     writer.Write([]byte("hello,1\n")); | 
 | ||||||
| } | func main() { | ||||||
| 
 |     // Disable console color, you don't need console color when writing the logs to file.
 | ||||||
| func hello(writer http.ResponseWriter, request *http.Request) { |     gin.DisableConsoleColor() | ||||||
|     writer.Write([]byte("hello,2\n")); | 
 | ||||||
| } |     // Use a file for logging
 | ||||||
| 
 |     f, _ := os.Create("/root/gin.log") | ||||||
| var port string |     gin.DefaultWriter = io.MultiWriter(f, os.Stdout) | ||||||
| 
 | 
 | ||||||
| func init() { |     r := gin.Default() | ||||||
|         flag.StringVar(&port, "port", "8090", "port number, default value is 8090") |     r.GET("/ping", func(c *gin.Context) { | ||||||
| } |         c.JSON(200, gin.H{ | ||||||
| 
 |             "message": "pong", | ||||||
| func main(){ |         }) | ||||||
|     flag.Parse() |     }) | ||||||
|     fmt.Println("Web Server port is:", port) |     // Listen and serve on 0.0.0.0:8090
 | ||||||
|     http.Handle("/hello1",&Controller{}) |     r.Run(":8090") | ||||||
|     http.Handle("/hello2",http.HandlerFunc(hello)) |  | ||||||
|     log.Fatal(http.ListenAndServe(":" + port, nil)) |  | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user