Docker网络最佳实践

前端之家收集整理的这篇文章主要介绍了Docker网络最佳实践前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有~4个微服务,一个Keycloak和一个RabbitMQ服务器,我想通过Docker部署.每个微服务都必须能够与Keycloak交谈,有些人需要与RabbitMQ交谈.

为了保持干净,我想为Keycloak创建一个docker-compose文件,一个用于RabbitMQ,每个微服务一个.这是正确的方法吗? (每个微服务都有自己的数据库.)

MS A,B,C,D需要能够调用Keycloak; MS C,D需要能够与RabbitMQ交谈.

将所有微服务与Keycloak / RabbitMQ服务器连接的最佳方法是什么?一些微服务也需要能够彼此交谈.

最佳答案
是的,你可以像你说的那样,通过为每个服务创建一个撰写文件,但是如果你想保持它干净,你可以把它们放在一个文件中,如下所示:

  1. version: '2'
  2. services:
  3. rabbitmq:
  4. image: rabbitmqImg
  5. networks:
  6. - rabbitmq
  7. keycloak:
  8. image: keycloakImg
  9. networks:
  10. - keycloak
  11. MS-A:
  12. image: MSImg
  13. networks:
  14. - keycloak
  15. MS-B:
  16. image: MSImg
  17. networks:
  18. - keycloak
  19. MS-C:
  20. image: MSImg
  21. networks:
  22. - keycloak
  23. - rabbitmq
  24. MS-D:
  25. image: MSImg
  26. networks:
  27. - keycloak
  28. - rabbitmq
  29. networks:
  30. rabbitmq:
  31. external:
  32. name: rabbitmq
  33. keycloak:
  34. external:
  35. name: keycloak

有了这个yaml微服务可以通过keycloak网络相互通信,所有的微服务都可以使用keycloak网络与keycloak服务器通信,而MS-C,MS-D可以通过rabbitmq网络与rabbitmq通信.
但如果有或将会有一些其他微服务不需要与rabbitmq或keycloak交谈,你应该创建另一个网络并将微服务放入其中,并根据需要将微服务放入其他网络.

正如Anunay所说,你可以使用swarm模式或kubernetes,但如果你是初学者,坚持使用docker-compose,之后进行扩展和编排,你可以使用这些框架.

编辑:
对于数据库,有多种方法取决于您拥有的数据库体系结构.例如,如果每个MS都有一个数据库容器,则应按每个MS创建一个网络,如下所示:

  1. version: '2'
  2. services:
  3. # General Services
  4. rabbitmq:
  5. image: rabbitmqImg
  6. networks:
  7. - rabbitmq
  8. keycloak:
  9. image: keycloakImg
  10. networks:
  11. - keycloak
  12. # Micro Services
  13. MS-A:
  14. image: MSImg
  15. networks:
  16. - ms-a-net
  17. - keycloak
  18. MS-B:
  19. image: MSImg
  20. networks:
  21. - ms-b-net
  22. - keycloak
  23. MS-C:
  24. image: MSImg
  25. networks:
  26. - ms-c-net
  27. - keycloak
  28. - rabbitmq
  29. MS-D:
  30. image: MSImg
  31. networks:
  32. - ms-d-net
  33. - keycloak
  34. - rabbitmq
  35. # Database Services
  36. DB-A:
  37. image: DBImg
  38. networks:
  39. - ms-a-net
  40. DB-B:
  41. image: DBImg
  42. networks:
  43. - ms-b-net
  44. DB-C:
  45. image: DBImg
  46. networks:
  47. - ms-c-net
  48. DB-D:
  49. image: DBImg
  50. networks:
  51. - ms-d-net
  52. networks:
  53. rabbitmq:
  54. external:
  55. name: rabbitmq
  56. keycloak:
  57. external:
  58. name: keycloak
  59. # Services Network
  60. ms-a-net:
  61. external:
  62. name: ms-a-net
  63. ms-b-net:
  64. external:
  65. name: ms-b-net
  66. ms-c-net:
  67. external:
  68. name: ms-c-net
  69. ms-d-net:
  70. external:
  71. name: ms-d-net

猜你在找的Docker相关文章