我对 golang 和 docker 还很陌生,所以在查看了许多线程和互联网资源后,我最终对应该如何设置感到困惑。
\n\n我的问题是,由于未找到本地依赖项,我面临着 golang 应用程序的 docker 构建错误。
\n\n仅供参考(本地机器):go 版本 go1.13.4 linux/amd64
\n\n这是我的问题的背景:
\n\n我有一个存储库,其中包含将在 Kubernetes 中运行的简单微服务(用 Go 编写)的源代码。因此存储库中的每个文件夹都代表一个服务。我还有一个文件夹“tools”,用于重新组合许多服务共享的帮助程序功能和资源。\n我的存储库不在任何 Go 特殊路径中,它位于我的一个驱动器的根目录中。\n所以这是我的存储库的方式回购协议看起来像:
\n\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 service1\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.go\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Dockerfile\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.mod\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 go.sum\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 service2\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 service3\n\xe2\x94\x82 ...\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 serviceX\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tools\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 helpers.go\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ressources.go\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.mod\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 go.sum\nRun Code Online (Sandbox Code Playgroud)\n\n所以每个文件夹/服务都是一个 go 模块来独立处理其依赖项。文件夹工具也是一个模块。\n我用以下命令初始化了每个模块go mod init FOLDER_NAME
在服务service1中我引用了模块工具来使用一些功能。这是我的实现方式:(./service1/main.go 的 src)
\n\npackage main\n\nimport (\n "fmt"\n\n st "../tools"\n\n // other modules imports\n)\n\nfunc main() {\n st.ExecHelperFunc()\n …Run Code Online (Sandbox Code Playgroud) 我愿意在 Google-Cloud-Run 中部署服务。它将是一个(python)Flask 应用程序,将连接到数据存储(数据存储模式下的 firestore)以写入或读取小 blob。
问题是文档中没有解释:访问您的数据库如何在 GCP 内访问数据存储,但不能从 GCE 或 AppEngine 访问数据存储。是否有一种奇特/无缝的方法来实现此目的,或者我应该提供服务帐户凭据,就好像它是外部平台一样?
预先感谢您的帮助和解答。
python-3.x google-client google-cloud-datastore google-cloud-firestore google-cloud-run