python - 在 GCP 上构建 Django 项目 Cloud-Build
问题描述
最近,我们开始着手将已建立的 Django 项目从 docker stack 转换为 Google App Engine。在此过程中,Google Cloud Build 变得派上了用场。Cloudbuild 在准备推出时会处理一些项目,尤其是应用程序的前端部分。
现在,当涉及到 python 和 Django 特定任务时,显而易见的选择是也求助于 cloudbuild。因此,我们尝试遵循 Google 使用其官方 NPM 云构建器(此处)解释的模式
我们面临的问题如下。使用官方 python 镜像构建时,构建步骤设置如下:
steps:
[...]
8 - name: 'python:3.7'
9 entrypoint: python3
10 args: ['-m', 'pip', 'install', '-r', 'requirements.txt']
11 - name: 'python:3.7'
12 entrypoint: python3
13 args: ['./manage.py', 'collectstatic', '--noinput']
这适用于第一步,安装所有要求。GAE 在部署应用程序时也会这样做,但这里有必要在上传之前从存储库中收集静态并安装 django 应用程序。
虽然第一步成功完成上述操作,但第二步失败并出现以下错误:
File "./manage.py", line 14, in <module>
) from exc
ImportError: Couldn't import Django. Are you sure it's installed and
available on your PYTHONPATH environment variable? Did you forget to
activate a virtual environment?
有没有更好的方法来处理这种情况?
解决方案
目录之外的任何内容/workspace
都不会在构建之间保留,因此您安装的要求不会进入第二步。从“创建自定义构建步骤”:
自定义构建步骤使用安装在 . 下的源代码
/workspace
运行,并使用/workspace
. 给定构建步骤留下的任何文件/workspace
都可用于其他构建步骤,无论这些步骤是同时运行还是随后运行。
解决此问题的一种方法是将它们安装到当前目录中:
- name: 'python:3.7'
entrypoint: python3
args: ['-m', 'pip', 'install', '-t', '.', '-r', 'requirements.txt']
- name: 'python:3.7'
entrypoint: python3
args: ['./manage.py', 'collectstatic', '--noinput']
同样,也可以创建一个虚拟环境并为需要安装依赖项的每个步骤激活它。
推荐阅读
- java - 基于少数变量的对象组列表
- android - Android Studio 模拟器打开但屏幕是黑色的
- amazon-web-services - ElasticBeanstalk 无法使用没有解释的模块构建 Go 应用程序
- python - 在 Ursina 引擎中动画装配模型
- wpf - WPF ListView 到 Datagrid 中读取一个可观察的字典可能吗?
- google-sheets - 使用数组公式对每一行输入单行查询
- reactjs - 无法使用 material-ui (mui-v5) 和 reactjs 使菜单宽度与容器宽度相同
- c++ - c ++将文件转换为字符串
- c++ - Visual Studio 代码 std_lib_facilities.h C++ 中的错误
- google-cloud-firestore - Firestore - 使用 ETag/If-Match 的 C# 条件更新?