Seb*_*oFr 9 google-app-engine docker google-cloud-platform dockerfile docker-compose
我目前正在尝试使用Google App Engine灵活的环境,特别是允许您通过提供Dockerfile 来构建自定义运行时的功能.
Docker提供了一个非常好的功能,docker-compose
用于定义和运行多容器Docker应用程序.
现在的问题是,有没有办法可以在GAE中使用docker-compose的力量?如果答案是否定的,那么使用Docker在GAE灵活环境中部署多容器应用程序(例如Nginx + PHP-FPM + RabbitMQ + Elasticsearch + Redis + MongoDB,...)的最佳方法是什么?
Nic*_*las 13
目前无法使用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指定的标头的请求.这可以作为将请求标识为来自您自己的应用程序的方式.
您提到了许多应用程序示例,包括NGinx,PHP-FPM,RabbitMQ等.使用自定义运行时的 App Engine ,您可以部署任何容器来处理流量,只要它响应来自端口8080的请求.请记住,主要该应用程序的目的是提供响应.实例应设计为快速启动和关闭以进行水平扩展.它们不应用于存储任何应用程序数据.这应该使用诸如Cloud SQL,Cloud Datastore,BigQuery或您在Compute Engine上运行的Redis实例等工具保留在App Engine之外.
我希望这能澄清一些事情并回答你的问题.
归档时间: |
|
查看次数: |
4082 次 |
最近记录: |