Создание Django-проектов на GCP Cloud-Build - PullRequest
0 голосов
/ 02 декабря 2018

Недавно мы начали работать над преобразованием установленного проекта Django из стека докеров в 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 делает это и при развертывании приложения, но здесь необходимо collectstatic из репозитория и установленных приложений django, прежде чем загружать их.

В то время как первый шаг завершается успешно с указанным выше, 2-й шаг завершается неудачно со следующей ошибкой:

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?

Есть ли лучший способ выхода из этой ситуации?

1 Ответ

0 голосов
/ 03 декабря 2018

Что-либо вне каталога /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']

Аналогичным образом, можно также создать виртуальную среду и активировать ее для каждого шага, для которого необходимо установить зависимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...