假设我们有一个简单的web应用程序栈,类似于docker-compse文档中描述的那样。它的docker-compose.yml如下所示:
version: '2'
services:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db这对笔记本电脑的开发很有帮助。但是,在生产中,要求db容器位于它自己的主机上是有用的。我可以找到使用docker-swarm扩展web容器的教程,但是没有注意db实例和web实例运行在同一台机器上的事实。
是否可以使用docker要求特定的容器在自己的机器上(或者更好的是在特定的机器上)?如果是这样的话,是怎么做的?如果不是,在多容器应用程序中处理数据库的对接方式是什么?
发布于 2016-06-05 03:27:08
在我看来,数据库处于容器世界的边缘,它们对于开发和测试很有用,但是生产数据库通常不是非常短暂的或可移植的东西。絮凝器当然和可伸缩类型的数据库(如Cassandra )一样有帮助,但是数据库可能有非常具体的需求,这些需求可能会更好地作为一个位于您的容器应用程序(RDS、云SQL等)后面的服务来对待。
在任何情况下,您都需要一个容器编排工具。
您可以应用人工调度约束来编写+群集,以指定容器可以在其上运行的对接主机。对于数据库,您可能有:
environment:
- "constraint:storage==ssd"否则,可以使用可抗、厨师、木偶设置更静态的Docker环境。
使用另一个支持docker的编排工具:库伯内斯、梅索斯、游牧民族
https://stackoverflow.com/questions/37629315
复制相似问题