【发布时间】:2020-02-05 07:21:12
【问题描述】:
这就是我目前正在做的事情。这是不可取的,因为它复制了具有共享功能的相同 lib/ 文件夹:
/project/
└── /cloudfunctions/
├── /functionA/
│ ├── main.py
│ └── /lib/
└── /functionB/
├── main.py
└── /lib/
如何组织或部署功能,让项目结构更像这样?
/project/
└── /cloudfunctions/
├── /functionA/
│ └── main.py
├── /functionB/
│ └── main.py
└── /lib/
为了澄清更多,我想知道gcloud functions deploy 没有--include-dependencies 标志,我想知道在第二个文件夹结构中包含共享库的最佳做法是什么。
现在这是我在 deploy.sh 中的 janky hack
rm -rf lib
cp -r ../lib ./lib
gcloud functions deploy...
【问题讨论】:
-
这是部署问题还是开发问题?
-
选项 C:使用 Cloud Run!在构建容器时,使用 Dockerfile 中的源/目录执行您想要的操作。
-
@guillaumeblaquiere 暂时避免使用 cloudrun,因为它在管理和部署映像时需要更多开销
-
我认为您的问题是您正在将 Cloud Functions 视为“程序”。它不是,它是一个函数,它是程序的一个子集。函数是一项微任务,应该尽可能小。要成为一名优秀的 Cloud Functions 开发人员,请考虑重新考虑您的方法。至于最佳实践,我并没有真正遵循任何。如果我需要以我喜欢的方式做某事,我只需创建自己的工具。但是,Cloud Run 比 Cloud Functions 更容易开发(意见不一)。为您的部署考虑两者。
-
@ProGirlXOXO,Dockerfile 开销 VS `deploy.sh` 开销。这是@Johnhanley 所说的观点,我是Cloud Run 的粉丝,我的观点是有偏见的!考虑可维护性、对 GKE 的可移植性(为什么不呢?)并发处理......无论如何,如果你的 2 个函数使用相同的库,它们可能(但不确定)可以属于同一个微服务,你可以将两者都部署在同一个容器。考虑您的用例,而不是 1 次开销 ;)
标签: python python-3.x google-cloud-platform google-cloud-functions