如何在 Google App Engine 中执行 manage.py?

Pab*_*blo 4 django google-app-engine google-cloud-platform

我跟着这个教程:

https://codeburst.io/beginners-guide-to-deploying-a-django-postgresql-project-on-google-cloud-s-flexible-app-engine-e3357b601b91

将 Django 应用程序部署到 Google App Engine。它在那里,它正在工作,但我需要运行迁移并创建一个用户。我应该如何manage.py在这些服务器上运行?我找到了如何从 Google Cloud Platform 控制台通过 SSH 连接到它们,但是一旦我进入服务器,我就找不到如何加载正确的 Python 环境和/或运行manage.py.

我还阅读了在 App Engine 柔性环境中运行 Django,它没有解释如何做到这一点,他们的配置文件似乎假设数据库凭据最终会出现在应用程序的 git 存储库中,这是一个很大的问题。我没有这样做,这意味着从我的工作站连接到生产数据库很麻烦。

例如,如果这是 Heroku,我会在我的开发工作站上执行此操作:

heroku run python manage.py migrate
Run Code Online (Sandbox Code Playgroud)

或者

heroku run python manage.py createsuperuser
Run Code Online (Sandbox Code Playgroud)

它会在服务器中执行这些命令。我正在尝试使用 Google App Engine 灵活(以及标准)做同样的事情。

小智 5

也许这对遇到这种情况的其他人很有用。使用@George 的答案进行正常操作当然是可取的,但在紧要关头,您可以从 App Engine 运行 python 命令。我最近不得不出于调试目的。我在 GCP 控制面板中的 App Engine -> Instances中使用了 SSH 访问。就我而言,我使用的是在 VM 实例中运行 docker 的 flex 环境,因此有几个步骤。

  1. 转到 GCP -> Engine -> Instances 并通过 SSH 进入一个实例。
  2. 一旦SSH会话运行确保您的集装箱都在运行:docker ps。就我而言,我的 Django 应用程序在一个名为gaeapp.
  3. Docker exec 进入容器: docker exec -it gaeapp /bin/bash
  4. 如果该命令有效,那么您现在处于应用程序的正在运行的容器中。运行你的命令。例如:python manage.py help

注意:这些环境应被视为短暂的,您不应将此作为任何一致工作流程的一部分。当 App Engine 实例从调试模式更改回正常操作时,它很可能会被销毁并由一个新实例替换它。这意味着生成的任何文件都将丢失。这也意味着生成的任何文件将仅存在于潜在的许多 VM 实例之一上。