gpt4 book ai didi

rest - 本地依赖的 GCF 部署

转载 作者:行者123 更新时间:2023-12-02 11:26:32 30 4
gpt4 key购买 nike

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

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.sum、. v1/pkg 的 gcloudignore 和 vendor/
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 像 v1/api/pets/create 一样被供应到每个 CRUD 函数/目录中
问题 :
项目在生产应用程序上是巨大的,它包含(当然)更多的方法和更多的代码,一切都滞后,因为那些 vendor 目录约为 4MB
如何将 v1/pkg 包含到每个 CRUD 文件夹中?你们用的最简单的方法是什么?
我们尝试了什么 :
  • 使用私有(private)仓库而不是本地路径-> 部署时不工作
  • 在root中使用functions.go,所有函数都在那里定义->为每个函数上传整个源代码,我们显然不希望这样
  • 将/pkg 中的代码分别用于每个函数(c/p),这是不可维护的,也没有任何意义
  • How can I use a sub-packages with Go on Google Cloud Functions? -> 这不是我们的用例,“helperpackage”应该在树的上层
  • 最佳答案

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

    gcloud functions deploy --source=v1/api/pets/create <function_name> --trigger-http --runtime=go113 --entry-point=<method-name>
    上传整个项目并不是一个真正的问题,因为在 Go 中,只保留已编译的二进制文件,所有源文件都被丢弃。所以,没有额外的文件会留在二进制文件旁边。
    但是,如果你真的想限制上传的代码,你可以使用 --ignore-file= parameter

    关于rest - 本地依赖的 GCF 部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64115292/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com