登录
首页 >  Golang >  Go问答

使用本地模块进行 Google 云函数部署

来源:stackoverflow

时间:2024-03-06 19:39:30 466浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《使用本地模块进行 Google 云函数部署》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

假设我们有这样的代码结构:

v1/
---api/
------pets/
---------create/
------------server.go
------------cmd/
---------------main.go
------------go.mod
------------go.sum
------------.gcloudignore
------------vendor/
---------get/
---------update/
---------delete/
------food/
---------create/
---------get/
---pkg/
------constants/
---------constants.go
------model/
---------pet.go
---------food.go
------store/
---------firestore.go
------validate/
---------header.go
------go.mod
------go.sum

每个crud功能目录(pets/get、food/create等)与pets/create的结构相同,因此它们都包含:server.go、用于测试的cmd/main.go、go.mod、go。 v1/pkg 的总和、.gcloudignore 和供应商/

v1/api/pets/create/go.mod 包含:

module bitbucket.org/company/project/v1/api/pets/create

go 1.14

replace bitbucket.org/company/project/v1/pkg => ../../../pkg

require (
    bitbucket.org/company/project/v1/pkg v0.0.0-00010101000000-000000000000
    github.com/GoogleCloudPlatform/functions-framework-go v1.1.0
)

v1/api/pets/create/server.go 包含将部署到 gcf 的方法

.gcloudignore 包含 go.mod 和 go.sum 以在部署时忽略它们

v1/pkg 被供应到每个 crud 函数/目录中,就像 v1/api/pets/create

问题: 项目在生产应用程序上是巨大的,它包含(当然)更多的方法和更多的代码,一切都会滞后,因为这些供应商目录大约为 4mb

如何将 v1/pkg 包含到每个 crud 文件夹中?你们使用的最简单的方法是什么?

我们尝试过

  • 使用私有存储库而不是本地路径 -> 在部署时不起作用

  • 在根目录中使用functions.go,其中定义了所有函数 -> 为每个函数上传了整个源代码,我们显然不希望这样

  • 分别使用 /pkg 中的代码到每个函数 (c/p),这是不可维护的,而且没有任何意义

  • 如何在 google cloud functions 上使用 go 子包? -> 这不是我们的用例,“helperpackage”应该位于树的上部


解决方案


没有什么神奇的事情是你能做的。像你的第二次尝试是最好的,但没有在根目录使用 function.go

gcloud functions deploy --source=v1/api/pets/create  --trigger-http --runtime=go113 --entry-point=

上传整个项目并不是一个真正的问题,因为在 go 中,只保留编译后的二进制文件,所有源文件都被丢弃。因此,二进制文件旁边不会保留任何额外的文件。

但是,如果你确实想限制上传的代码,可以使用--ignore-file= parameter

今天关于《使用本地模块进行 Google 云函数部署》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>