如何使用docker-compose将docker容器彼此连接起来

我必须用docker-compose设置一个mongo副本集。对于副本集,容器必须彼此认识。

我在docker-compose.yml中试过

    dbreplicasetpart1:
      image: mongo:2.6.8
      expose:
        - '27018'
      links:
        - replicasetpart2
        - replicasetpart3
      cap_add:
        - NET_ADMIN

    dbreplicasetpart2:
      image: mongo:2.6.8
      links:
        - replicasetpart1
        - replicasetpart3
      expose:
        - '27019'
      cap_add:
        - NET_ADMIN
...

我得到一个循环导入消息。但是如果我删除dbreplicasetpart1的反向链接,我不能从dbreplicasetpart2 ping到dbreplicasetpart1。
解决办法是什么?

最佳答案
你应该使用大使模式:

https://docs.docker.com/engine/admin/ambassador_pattern_linking/

基本上,您创建一个中间组件,将它们两者结合在一起。您可以看到我们与Spring Cloud的Eureka发现服务一起使用的示例:

ambassador:
  image: cpuguy83/docker-grand-ambassador
  volumes:
    - "/var/run/docker.sock:/var/run/docker.sock"
  command: "-name eureka_1 -name eureka2_1 "

eureka:
  links:
    - "ambassador:eureka2"

eureka2:
  links:
    - "ambassador:eureka"

为了简单起见,我只复制了链接

转载注明原文:如何使用docker-compose将docker容器彼此连接起来 - 代码日志