应用引擎入口点的目的是啥?

Posted

技术标签:

【中文标题】应用引擎入口点的目的是啥?【英文标题】:What is the purpose of app engine's entrypoint?应用引擎入口点的目的是什么? 【发布时间】:2021-11-24 13:38:20 【问题描述】:

我搜索了 App Engine 文档以了解什么是入口点,坦率地说,我遇到了困难。希望 SO 上的某个人能够解释入口点的含义和目的。

【问题讨论】:

这有帮助吗:cloud.google.com/appengine/docs/standard/python3/config/… 那种。我正在使用应用程序引擎来托管我的不和谐机器人,并且我按照指南将我的主代码 (bot.py) 脚本放置在入口点的位置。我想我很困惑,因为我的代码与侦听端口 8080 的命令没有任何关系 能否请您分享指南和 (bot.py) 的代码示例,以便更好地了解您的情况并尝试帮助您解决对入口点以及如何将其应用于您的代码的担忧,如果有必要的话。 【参考方案1】:

入口点是在容器启动时执行的Docker command,允许您配置将作为可执行文件运行的容器。

对于 App Engine,入口点在 app.yaml file 中指定,入口点字段中的命令将包含在应用程序 Dockerfile 的入口点中,这意味着它将告诉应用程序如何拥有在部署它时启动。入口点应启动一个 Web 服务器,该服务器将侦听 port 8080,这是 App Engine 用来向已部署容器发送请求的端口。 App Engine 提供了PORT 环境变量以方便使用。

例如:

entrypoint: gunicorn -b :$PORT main:app

通过此入口点,您可以告诉应用程序如何启动,在本例中使用gunicorn,以及您希望它在哪里继续侦听。

默认情况下,当您没有在app.yaml 文件中明确设置一个时,此gunicorn 命令是 App Engine 使用的入口点。

您始终需要一个入口点,因为所有 App Engine 应用程序都是使用 Docker 容器部署的。即使您只使用您的代码部署文件,App Engine 也会使用在app.yaml 中设置的参数构建一个 Docker 容器,因为当您使用 App Engine 部署应用程序时,在内部使用的进程是 build,其中图片由 App Engine 提供。

此外,当您使用 App Engine 部署应用时,如果您转到 GCP 控制台中的 Cloud Build 部分,您将能够找到相关的构建,您可以在其中找到构建 Docker 的所有步骤和信息部署 App Engine 的容器。

总之,App Engine 使用来自 Docker 的入口点,因为在内部,App Engine 在部署时正在使用 Cloud Build 服务使用入口点中提供的信息为您的应用构建容器映像。

【讨论】:

非常感谢 Vicky 的全面回复。如果我们不传递 Web 服务器,而是传递一个不和谐的脚本,即 bot.py,会发生什么? bot.py 文件中没有任何与创建 Web 服务器(即 Flask 等)相关的内容?如果这是一个非常菜鸟的问题,请原谅。我对这一切都很陌生,包括 Docker。另外我一直认为 Docker 和 Cloud Run 有关,不一定是 App Engine。 你试过部署它吗?您能否分享您一直关注的代码或文档,以便更好地理解您的方案。【参考方案2】:

入口点告诉容器在运行时要做什么。我最常看到的是Docker,但其他容器格式也有类似的东西。

对于 App Engine,入口点设置的关键是启动监听请求的 HTTP 服务器。这是描述入口点的Python documentation,但页面顶部还有其他运行时的链接。

【讨论】:

以上是关于应用引擎入口点的目的是啥?的主要内容,如果未能解决你的问题,请参考以下文章

执行线程的“起始地址”是啥意思?

在具有入口点的应用程序上使用 cProfile

C#提示不只定义了一个入口点,请使用/main进行编译以指定包含入口点的类型

直接在应用程序(webpack)的入口点导入文件加载器。感叹号是啥?

如何使用具有多个入口点的 Webpack 和 Gulp 来转换应用程序和测试目录?

如何从visual c ++中的exe文件中获取“入口点的地址”?