Docker服务命名容器之间的交互

时间:2019-11-12 13:14:47

标签: docker docker-compose

刚从一个新手docker用户那里问了一些问题。

我正在使用三个docker-compose.yml文件。每三个nginx服务一个,第一个Web应用程序和数据库一个,第二个Web应用程序和数据库一个最后一个。 docker容器,每个容器和用途如下。

  1. nginx gen
  2. nginx letsencrypt
  3. nginx
  4. 网络服务器1
  5. 数据库1(仅适用于Web服务器1)
  6. 网络服务器2
  7. 数据库2(仅适用于Web服务器2)

现在继续提问。

  1. 在第二个和第三个docker-compose.yml文件中,我使用了相同的服务名称,并且在应用程序中遇到了问题。 Web服务器1有时会看到数据库1,但有时会切换到数据库2。这是因为我在应用程序配置中使用服务名称作为数据库主机的配置。 docker-compose.yml中的服务名称是否应该唯一?
  2. 我们可以根据需要命名docker服务吗?是否有命名约定?
  3. 为Docker内部的应用设置主机配置的最佳实践是什么?我们应该使用其容器IP吗?还是我们应该使用服务名称?

1 个答案:

答案 0 :(得分:0)

  1. 是的,如果他们在同一个网络中。
  2. 随心所欲
  3. IP绝对没有完成。 Docker的一部分目的是在多台机器上运行您的应用程序,如果您使用诸如kubernetes之类的容器编排工具,则IP可能会不断变化。通过其服务名来引用主机是可以的(只要它们位于同一网络中即可),但是理想情况下,您应该启动一个容器以进行服务发现(Eureka,Zuul,Consul等),并让每个服务注册本身就是一种服务。您的第一个问题已经解决了通过服务名称引用服务可能遇到的问题。