Docker网络最佳实践

bac*_*kup 7 rabbitmq docker microservices

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

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

图像微服务关系等

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

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

Anu*_*nay 2

您可以通过 docker 完成此操作,但您需要考虑以下事项,

  • 为什么要部署

如果答案是开发或测试,那么可以使用 docker compose。它可以帮助您从一个位置启动所有容器,并且可以将它们配置在一个文件中。您可以通过 docker compose 将 keycloak、rmq 数据库和服务全部设置在同一主机上,并且它们可以相互通信

如果您想为 prod 或像 env 这样的 prod 执行此操作,那么我们可以研究 docker swarms。它是 docker compose 的增量更新,可让您在多个主机上部署容器。

如果您只有四个服务,您可以使用它,但如果您有更多服务,或者您需要更好地控制服务的部署、运行方式并需要更多指标和接触点,请选择 kubernetes。

如果你想将数据库保存在容器中,我不太确定。容器的易失性很小,但总的来说,它们为您提供了高可用性,但对于数据库和 rmq,我个人不会将它们保留在用于生产的容器中,但您可以四处阅读并根据您的需要做出决定。

Docker swarms 和 kubernetes 也可用于开发和测试环境。它们始终可以在单个主机上运行。