Docker组合和主机名

我有一个名为“web”和“db”的2个服务(容器)的合成文件。

{ "version": "2", "services": { "web": { "image": "nodejs:latest", "ports": ["80"] }, "db": { "image": "mysql:latest", "ports": ["3306"] } } } 

我能够通过使用“数据库”作为我的数据库的IP从Web容器访问数据库容器。 如下所示,在撰写文件中使用“主机名”有什么好处?

 { "version": "2", "services": { "web": { "image": "nodejs:latest", "hostname": "web", "ports": ["80"] }, "db": { "image": "mysql:latest", "hostname": "db", "ports": ["3306"] } } } 

docker-compose语法版本“2”中引入了容器间专用networking中主机自动发现function。 在您只能通过链接别名引用容器之前。 还有其他解决scheme来创造发现 – 例如。 添加代理或“大使”容器。

这就是说,我会看到使用主机名的三个原因:

  • 发现基于服务名称,并不总是需要成为主机名。
  • 在一个服务中可以有多个主机名(f.ex.web服务器)
  • 如果要在不同的环境中保持一致的configuration,则可以使用主机名来描述应用程序正在使用的其他端点,而不是依赖服务名称