我正在构建一个基于App的Django应用程序。我已经创建了一个Postres CloudSql实例。我用Cloud触发器创建了一个cloudbuild.yaml文件。
django = v2.2
psycopg2 = v2.8.4
GAE运行时: python37
cloudbuild.yaml:
steps:
- name: 'python:3.7'
entrypoint: python3
args: ['-m', 'pip', 'install', '-t', '.', '-r', 'requirements.txt']
- name: 'python:3.7'
entrypoint: python3
args: ['./manage.py', 'migrate', '--noinput']
- name: 'python:3.7'
entrypoint: python3
args: ['./manage.py', 'collectstatic', '--noinput']
- name: "gcr.io/cloud-builders/gcloud"
args: ["app", "deploy"]
timeout: "3000s"部署网运行良好,应用程序可以连接到数据库。但是,当我尝试加载一个页面时,我会得到下一个错误:"...import psycopg2 as Database“/srv/psycopg2 2/_init_..py”,第50行,从psycopg2._psycopg导入(# noqa ImportError: libpython3.7m.so.1.0:无法打开共享对象文件:没有这样的文件或目录)“。
另一件有趣的事情是,如果我用'gcloud应用程序部署‘(而不是通过云构建)部署我的应用程序,那么一切都很好--我没有收到上面的错误,我的应用程序可以与数据库通信。
我对gcloud非常陌生,所以我可能错过了一些基本的东西。但我的问题是:
-What从我的cloudbuild.yaml中丢失了让它工作吗?
-Do我要把我的依赖项安装到正确的位置?
这个错误的-The预期与基于云构建的部署和手动部署有什么不同?
发布于 2020-01-03 14:50:03
据我所见,您正在使用Cloud运行gcloud app deploy。
此命令将代码和配置文件提交给App。如前所述,Google运行在Google托管环境中,该环境自动处理requirements.txt文件中指定的依赖项的安装,并执行您在requirements.txt中定义的入口点。这样做的好处是不必手动触发依赖项的分期付款。云构建的前两个步骤不会影响affecting的运行时,因为一旦部署了上述文件,它的配置就会被管理。
云构建的目的是从各种存储库导入源代码,并根据您的规范构建二进制文件或图像。可用于构建Docker映像并将它们推送到存储库、下载要包含在Docker中的文件或打包Go二进制文件并将其上传到云存储。此外,gcloud构建器的目标是通过构建管道运行gcloud命令,例如,在其他操作成功所需的步骤中创建帐户权限或配置防火墙规则。
由于您不是在自动化构建管道,而是试图部署App应用程序云构建并不是您应该使用的产品。部署到deploying中的方法是简单地运行gcloud app deploy命令,让Google的环境为您处理剩下的部分。
发布于 2021-02-05 07:52:38
这个Quickstart不是准确地描述了OP试图做的事情吗?https://cloud.google.com/source-repositories/docs/quickstart-triggering-builds-with-source-repositories
我本人希望将Django was应用程序自动部署到一个AppEngine“标准”实例中。
https://stackoverflow.com/questions/59570113
复制相似问题