在我们公司~7个项目中,每个项目都基于Docker。每个项目都包含基本服务,如MySQL,Nginx,PHP。一些项目与其他项目进行通信。由于同一端口上有许多服务,我们为每个项目制作新的docker主机(docker-machine)。从这里开始几乎没有问题:
好吧,我正在寻找更多的企业解决方案来管理很多docker机器。或者是一些可以帮助我了解现状的技术。
答案 0 :(得分:1)
首先,我开始将我的项目部署到swarm-cluster作为服务,而不是集群几个docker VM。这使我能够只使用服务ID来玩服务。重要的是如何将项目分成服务,这部分可能很麻烦,具体取决于您的项目。
https://docs.docker.com/engine/swarm/swarm-tutorial/deploy-service/
然后,我在swarm-manager上构建我的配置和监控软件并使用它。您可以使用docker-manager上的自动化工具来控制服务。
答案 1 :(得分:0)
虚拟机消耗资源,如果不一定,最好避免使用它。相反,您可以在裸机上部署Docker swarm中的项目。
但是因为每个项目都有一个需要从外部访问的入口点(即https://site1.com和https://site2.com),所以你不能暴露同一个端口(class BaseTableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
...
}
}
class ChildViewController: BaseTableViewController {
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
...
}
}
或{ {1}})用于同一群中的所有前端服务。为此,您可以使用HAProxy或Nginx等反向代理,根据主机名将请求转发给正确的服务。反向代理也可以是群中的服务。在这种情况下,您不应再暴露项目的端口。
反向代理有许多其他advantages,如SSL终止(这使SSL证书管理变得更加容易)。
如果您将项目添加到同一个自定义网络,那么来自不同项目的服务可以使用其泊坞服务名称和内部端口(即443
)安全直接地进行通信。