我想找到一种方法,在App Engine Flex和Cloud Run的生产环境中调用CLI任务,同时留在本地机器的终端中。通过";CLI任务";我指的是flask shell
、rails console
、rake
、yarn run
和其他特定于应用程序的命令行工具。
理想情况下,这将是一个命令,它将启动一个与实际生产实例具有相同配置的实例——相同的docker容器、环境变量等等——并在完成后将其删除。
我发现在Heroku上做这件事的方式是最直接和有用的:
Heroku允许您使用Heroku run命令在一次性dyno中运行命令——只需要在需要时执行的脚本和应用程序。使用它可以启动连接到本地终端的Rails控制台进程,以便在应用程序的环境中进行实验
heroku run rails console
irb(main):001:0> puts 1+1
2
我可以通过应用程序引擎调试模式获得类似的结果。要做到这一点,我将SSH连接到实例中(或者Cloud Run(,使用docker exec -it gae /bin/sh
调出bash shell,然后运行任务。这有很多缺点,而且通常不受欢迎,因为它使用的实例与生产流量相同。它可能会减慢Web服务器的速度,甚至完全停止。
在类似于heroku一次性dyno方法的单独实例中运行任务的惯用GCP方法是什么?
如今,如果不通过SSH访问,就无法在生产环境中运行GAE Flex和Cloud run中的CLI命令。
为了在未来实现这一点,您可以请求此功能。