当前位置: 首页 > 面试题库 >

在Google App Engine中使用Docker compose

何玺
2023-03-14
问题内容

我目前正在尝试使用 Google App Engine灵活环境 ,特别是该功能允许您通过提供Dockerfile
来构建自定义运行时。

Docker提供了一个非常好的功能,docker-compose用于定义和运行多容器Docker应用程序。

现在的问题是,有没有办法可以在GAE中使用docker-
compose的功能?如果答案是否定的,那么使用Docker在GAE灵活环境中部署多容器应用程序(例如Nginx + PHP-FPM + RabbitMQ
+ Elasticsearch + Redis + MongoDB等)的最佳方法是什么?


问题答案:

目前无法使用docker-compose在单个App Engine实例中具有多个应用程序容器。但是,这似乎是设计使然。

独立扩展应用程序组件

如果您想拥有多个应用程序容器,则需要将它们部署为单独的App
Engine服务。每个服务实例仍然只有一个应用程序容器,但是每个服务可能会有多个实例。这将为您提供寻求独立伸缩每个应用程序组件的灵活性。另外,如果容器中的应用程序挂起,则不会影响其他服务,因为它们将驻留在不同的VM中。将每个组件部署为单独的服务的另一个好处是,不必为每个服务使用灵活的环境。对于某些非常小的任务,例如API后端或服务于相对缓慢变化的Web内容,标准环境就足够了,并且在资源水平较低的情况下可能会更便宜。

组件之间的通讯

由于您的评论之一提到获取实例IP,因此我认为您可能会发现服务间通信很有用。我不确定您要使用VM实例IP的原因是什么,但是典型的用例可能是在实例或服务之间进行通信。要在没有实例IP的情况下执行此操作,最好的选择是仅使用适当的URL将HTTP请求从一项服务发送到另一项服务。如果您有一个名为
web 的服务和一个名为 api 的服务,则该 Web
服务可以向api.mycustomdomain.com托管您的应用程序的位置发出请求,并且 api 服务将收到X-Appengine- Inbound-Appid带有您的项目ID指定的标头的请求。这可以用作将请求标识为来自您自己的应用程序的方式。

使用Docker的多容器应用程序

您提到了许多应用程序示例,包括NGinx,PHP-
FPM,RabbitMQ等。通过使用自定义运行时的 App Engine
,您可以部署任何容器来处理流量,只要它能够响应来自端口8080的请求即可。请记住,该应用程序的目的是提供响应。实例应设计为可快速启动和关闭,以实现水平扩展。它们不应用于存储任何应用程序数据。使用诸如Cloud
SQL,Cloud
Datastore,BigQuery或您在Compute
Engine上运行的自己的Redis实例之类的工具,该变量应保留在App
Engine之外。

我希望这可以澄清一些事情并回答您的问题。



 类似资料:
  • 我正在尝试运行Jersey的HelloWorld示例,但失败了。这就是我尝试过的。 我已经设置我的这样 我已经设置了我的像这样, 我的服务设置是这样的, 我正在使用这些libs 这是这个问题的视频http://screencast.com/t/oIYKMQw1x 知道我做错了什么吗? 谢谢 堆栈跟踪 Apr 23,2012 12:19:27 AMcom.sun.jersey.server.impl

  • 我正在尝试将一个基于PHP的API从共享主机移植到Google应用程序引擎。我下载了PHPSDK,在启动器中创建了一个新的应用程序,在PHP中启用了cURL。ini(使用),现在我得到这个错误: 如果我向curl_init()添加反斜杠(告诉它不要使用MyNamespace),我会得到这个: 除了启用cURL_lite()(稍后我可能会解决这个问题,因为它不支持我需要的cURL选项),我如何解决这

  • PS:对不起我的英语,我是一个绝望的法国人,需要帮助

  • 我一直试图获得一个简单的web操作来向API发出一个经过身份验证的get请求(我已经从示例代码中删除了实际的url和秘密)。 我已经在本地成功地运行了这一点,但是当我测试web动作时,它只是在记录“调用Axios”之后死亡。 它不会报告错误,我尝试实现一个承诺,认为线程在api响应之前就结束了,但没有效果。有什么线索吗?

  • 问题内容: 我想使用Android Studio使用Gradle构建工具开发应用程序。我无法在上插入存储库和库。我的文件如下: 如何在项目中添加OpenCV? 问题答案: 您可以在Android Studio中轻松完成此操作。 请按照以下步骤将Open CV作为库添加到您的项目中。 libraries在项目主目录下创建一个文件夹。例如,如果您的项目是OpenCVExamples,则将创建一个Ope

  • 我想使用Android Studio开发一个应用程序使用Gradle构建工具。我无法在上插入OpenCV repo和库。我的文件如下所示: 我如何在我的项目中添加OpenCV?

  • 问题内容: 我有一个简单的Entitly类,(和单独类中的字段)。然后,我使用Spring Data()访问数据库(MySql),使用常规ID,查询可以正常工作,无论是Spring生成的查询还是我自己编写的查询。与我没有设法创建正确的查询。我想做的是选择所有id(发生某些情况的EmbeddedId字段之一),这里有一些代码示例,也许有人会知道如何解决它。 实体类: EmbeddedId类: 和存储

  • 问题内容: 我正在研究控制建筑物的光和热的项目。后端(用Java编写)将在Mac Mini上运行,并且应该可以通过SOAP进行访问。 我希望将此项目的复杂性降至最低,因为我不希望每个使用它的人都必须设置应用程序服务器。所以到目前为止,我一直使用javax.xml.ws.Endpoint: 这样的效果出奇的好(嘿,您什么时候最后一次只用3行代码看到Java中的东西?),但是现在我正在寻找一种使用HT