首页 > 解决方案 > 在 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?

有没有更好的方法来处理这种情况?

标签: pythondjangogoogle-cloud-platformgoogle-cloud-build

解决方案


目录之外的任何内容/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']

同样,也可以创建一个虚拟环境并为需要安装依赖项的每个步骤激活它。


推荐阅读