如何设计Docker路由和数据库层?
我想在运行CentOS的单个docker主机上托管一些Django。我想要三层如何设计Docker路由和数据库层?,docker,Docker,我想在运行CentOS的单个docker主机上托管一些Django。我想要三层 网络 应用 数据库 网络:我希望网络层有一个nginx容器,将请求路由到应用层的不同容器。我打算在这个docker容器中使用1:1端口映射,将主机上的端口80公开给容器。Nginx将直接请求端口8001-8010上运行的应用层中的相应应用程序 应用程序:我有几个容器,每个容器运行一个单独的django应用程序,使用Gunicorn在端口8001-8010上运行 数据库:一个运行MySQL的容器,每个应用都有不同的
- 网络
- 应用
- 数据库
Docker不支持动态链接,但有一些工具可以为您做到这一点,请参阅 2.)您可以首先启动数据库容器,然后将所有应用程序容器链接到数据库容器。Docker将在启动时创建主机文件(静态地,如果数据库容器重新启动并获得另一个需要动态链接的IP,请参见上文)。当您像这样链接容器时:
-link db:db
您可以使用主机名db访问容器。我最终使用了以下解决方案:
它允许您通过主机名引用同一主机上的其他容器。它也是动态的,因为容器上的/etc/host文件随着容器的上下移动而动态更新 谢谢,您提供的链接讨论了如何使用领事或etcd。那些在操作系统DNS名称解析级别不起作用,是吗?ie:我的nginx配置文件或django如何在不重写代码的情况下连接到etc端点。是一个分布式键值存储和领事、SkyDNS等,在etcd上构建DNS。AkyDNS应该适用于所有Docker contaienr,根据以下声明:“我们设置skydns将其名称服务器绑定到docker0网桥,以便可用于容器。”我不知道nginx是否可以处理此问题,也许您最终会使用这些或。