Docker-关于使用Redis、Postgres、ElasticSearch、NGINX、Workers和多个ruby应用程序的web应用程序设置的建议
我真的很喜欢Docker。我希望将现有的应用程序基础结构放入容器中,以提供一个一致的、隔离的环境,并简化部署 我的设置 我正在运行许多服务/守护进程(Redis、ES、PG、NGINX)以及一些工作程序(需要与PG和Redis交谈)。我有3个ruby web应用程序服务和一个faye服务,它们都需要与Redis、PG和ES对话。NGINX将需要反向代理应用程序Docker-关于使用Redis、Postgres、ElasticSearch、NGINX、Workers和多个ruby应用程序的web应用程序设置的建议,docker,Docker,我真的很喜欢Docker。我希望将现有的应用程序基础结构放入容器中,以提供一个一致的、隔离的环境,并简化部署 我的设置 我正在运行许多服务/守护进程(Redis、ES、PG、NGINX)以及一些工作程序(需要与PG和Redis交谈)。我有3个ruby web应用程序服务和一个faye服务,它们都需要与Redis、PG和ES对话。NGINX将需要反向代理应用程序 集装箱战略 我想知道的第一件事是,你会对docker和这些服务使用哪种策略 您是否会为每个服务创建一个(例如ubuntu)容器,然后用
集装箱战略 我想知道的第一件事是,你会对docker和这些服务使用哪种策略
- 您是否会为每个服务创建一个(例如ubuntu)容器,然后用相应的隧道(-link)启动容器李>
- 您会将服务捆绑在一个容器上,将应用程序捆绑在另一个容器上吗
- 或者,您会创建一个大型容器吗
我知道装载卷的-v标志,所以我想您可以设置一些环境变量,使主机装载点可配置。容器策略 容器用于拆分服务,在容器中运行服务,所以这取决于服务以及您如何组织服务 Dockerfile
Dockerfile用于构建用于运行容器的映像,因此,为每个容器创建Dockerfile容器策略:这是一个常见问题。这实际上取决于你想对你的应用程序做什么
- 如果您的应用程序将有大量的部署(例如,如果您的应用程序是SAAS,并且您将为每个客户部署一个新实例),但这些部署预计将非常小,那么您可能希望将所有内容都放在一个容器中,因为部署将更加容易
- 如果您的应用程序可能会被显著地扩展(即,如果您希望需要多个前端、工作人员等),那么您可能希望将每个服务放在不同的容器中,以便可以单独扩展每个服务
- 如果您的应用程序将有大量部署并且必须扩展,那么您将需要多个容器,并确保正确使用链接:-)
- 有时,您可以在本地机器上工作,不时地构建容器(并测试它们)(有点像“测试以推送到登台”,只是速度快得多)。
如果构建新容器需要一段时间(例如,如果使用
,然后是昂贵的构建/依赖步骤),那么这是一种很好的方法ADD
- 如果容器构建速度很快,您可以在每次更改某些内容时不断地重新构建和重新部署新容器
- 您还可以使用两个稍有不同的DockerFile。假设您的源代码位于
中。在development Dockerfile中,您将声明/myapp
为/myapp
,并且开发人员将绑定挂载源的本地副本到卷
。在生产Dockerfile中,您将使用/myapp
将源代码复制到ADD
。在构建过程中也会有一些细微的差异/myapp
最后一种方法并不理想(因为在开发和生产环境尽可能接近的情况下它会更好!),但在某些情况下(在构建新容器非常长的情况下),它会有很大帮助。回答得很好,谢谢!希望避免使用开发和生产容器。看起来部件就在那里,所以我应该能够想出一种方法,根据环境自动设置容器。再次感谢您为我们提供的深思熟虑的选择!很好的答案,但project应该如何处理多个DockerFile?