gpt4 book ai didi

google-app-engine - 在 Google App Engine 中使用 Docker 组合

转载 作者:IT老高 更新时间:2023-10-28 21:22:18 26 4
gpt4 key购买 nike

我目前正在试验 Google App Engine 柔性环境,尤其是允许您构建 custom runtimes 的功能通过提供 Dockerfile。

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

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

最佳答案

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

独立扩展应用程序组件

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

组件之间的通信

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

使用 Docker 的多容器应用程序

您提到了许多应用程序示例,包括 NGinx、PHP-FPM、RabbitMQ 等。使用 App Engine 使用 custom runtimes ,您可以部署任何容器来处理流量,只要它响应来自端口 8080 的请求。请记住,应用程序的主要目的是提供响应。实例应设计为可快速启动和关闭,以实现水平扩展。它们不应用于存储任何应用程序数据。使用 Cloud SQL 等工具,这应该保留在 App Engine 之外。 , Cloud Datastore 、BigQuery 或您自己的 Redis instance running on Compute Engine .

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

关于google-app-engine - 在 Google App Engine 中使用 Docker 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39877521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com