为了账号安全,请及时绑定邮箱和手机立即绑定

如何将此功能部署到谷歌云?

如何将此功能部署到谷歌云?

Go
HUH函数 2022-06-21 10:43:25
这个api可以部署到谷歌云功能吗?https://github.com/Mdsp9070/someoneFlix/tree/master/backend我尝试部署,但出现此错误: ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Build failed: main.go:16:2: import "flix-api.localhost/flix-api" is a program, not an importable package; Error ID: 975560ac
查看完整描述

1 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

您必须实现正确的签名来处理函数请求

func myFunction(w http.ResponseWriter, r *http.Request) 
{
...
}

在这里,您开始拥有具有多个端点的 Web 服务器。这不是 Cloud Functions 模式,而是Cloud Run服务。试试这个(使用正确的 ProjectID)

gcloud alpha builds submit --pack=image=gcr.io/PROJECT_ID/backend && \
gcloud run deploy --platform=managed --region=us-central1 --image=gcr.io/PROJECT_ID/backend --port=3333 --allow-unauthenticated backend

并调用提供的网址。我用你的代码进行了测试,它对我有用,我只是在日志中遇到错误Error on loadinf .env file。您可能必须--set-env-vars设置添加环境变量。

如果有兴趣,我可以解释更多命令

编辑

一些解释

  1. Cloud Functions 和 Cloud Build 共享相同的后端。Cloud Run 托管一个网络服务器(在可自定义的容器中)。CLoud Function 将函数打包到网络服务器中(这就是为什么您必须尊重函数签名以使其可被通用网络服务器调用)。

  2. Cloud Run 可以处理同一实例中的并发请求(最多 80 个),Cloud Functions 仅 1。如果将 Cloud Run 并发参数设置为 1,您可以获得完全相同的行为

  3. Cloud Run 需要一个容器。有了代码后,您可以编写Dockerfile(您可以在文档中找到示例)您可以使用Cloud BuildDocker build构建容器。在我的代码示例中,我使用了基于Buildpack project的 Cloud Build 的 alpha 版(且未记录的命令) 。构建包检测您的语言、主文件并根据您的代码自动创建一个标准容器。非常适合快速测试和不需要定制的容器。


查看完整回答
反对 回复 2022-06-21
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信