Google Cloud Run 部署Knative Serverless 应用

Serverless 专栏收录该内容
2 篇文章 0 订阅

Google Cloud Run 部署Knative Serverless 应用

Google Cloud Run 是 Google 最近推出的基于容器运行的支持 Serverless 应用的服务,是 Knative 的Google Cloud 托管版本;和其他的 Serverless 如Google Cloud Functions, AWS Lambda 等相比,优点在于完全的基于容器,且不限语言

安装 Cloud SDK

Cloud SDK 是 Google Cloud 的命令行工具,用于访问Google Cloud相关资源

具体平台的安装方式可以参考 https://cloud.google.com/sdk/docs/quickstarts

创建应用,上传镜像

以 Go 语言为例,创建一个应用,根据不同的请求返回不同的内容

  • main.go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"net/url"
)

type CustomResponse struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
}

func main() {
	fmt.Println("Server started")
	http.HandleFunc("/", rootHandler)
	_ = http.ListenAndServe(":8080", nil)
}

func rootHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Println("Start handler request")

	queryForm, err := url.ParseQuery(r.URL.RawQuery)

	w.Header().Set("Content-Type", "application/json")
	message := ""

	if err == nil && len(queryForm["message"]) > 0 {
		message = queryForm["message"][0]
	} else {
		message = "Hello Go Server"
	}

	_ = json.NewEncoder(w).Encode(CustomResponse{200, message})
	fmt.Println("Handler request completed")
}
  • Dockerfile
FROM golang:1.12.3-alpine3.9
RUN mkdir /app
ADD . /app/
WORKDIR /app
RUN CGO_ENABLED=0 GOOS=linux go build -o main main.go
EXPOSE 8080
CMD ["/app/main"]

相关配置可以参考 推送和拉取映像,需要注意的是需要一个项目 ID,这个 ID 可以在 home/dashboard 下找到

Google Porject

  • 配置本地 Docker
gcloud auth configure-docker
  • 构建镜像
docker build -t gcr.io/genial-post-128203/serverless .
  • 推送镜像
docker push gcr.io/genial-post-128203/serverless

创建 Serverless 应用

Cloud Run 页面选择创建服务

创建服务

服务详情

测试

请求 URL https://cloudserverless-pae2opltia-uc.a.run.app

  • 不带参数
curl https://cloudserverless-pae2opltia-uc.a.run.app
{"code":200,"message":"Hello Go Server"}
  • 指定参数
curl https://cloudserverless-pae2opltia-uc.a.run.app?message=HelloWood
{"code":200,"message":"HelloWood"}

代码

参考资料

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页

打赏

呜呜呜啦啦啦

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值