这个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
设置添加环境变量。
如果有兴趣,我可以解释更多命令
编辑
一些解释
Cloud Functions 和 Cloud Build 共享相同的后端。Cloud Run 托管一个网络服务器(在可自定义的容器中)。CLoud Function 将函数打包到网络服务器中(这就是为什么您必须尊重函数签名以使其可被通用网络服务器调用)。
Cloud Run 可以处理同一实例中的并发请求(最多 80 个),Cloud Functions 仅 1。如果将 Cloud Run 并发参数设置为 1,您可以获得完全相同的行为
Cloud Run 需要一个容器。有了代码后,您可以编写Dockerfile(您可以在文档中找到示例)。您可以使用Cloud Build或Docker build构建容器。在我的代码示例中,我使用了基于Buildpack project的 Cloud Build 的 alpha 版(且未记录的命令) 。构建包检测您的语言、主文件并根据您的代码自动创建一个标准容器。非常适合快速测试和不需要定制的容器。
- 1 回答
- 0 关注
- 116 浏览
添加回答
举报
0/150
提交
取消