本着Microservice的精神从本地服务器连接到本地Mongodb Docker容器

时间:2018-12-24 06:58:19

标签: mongodb docker networking embedded-server

我在本地计算机上使用Docker组成了 Mongodb 服务,并在 docker-compose.yml 中使用语法container_name: mongodb配置了主机名,然后使用秉承微服务的精神,我也在本地的轻量级嵌入式服务器(例如 Jetty )上启动了 RESTful API服务

问题是,由于网络不同,本地RESTful API服务无法通过使用本地Docker容器上定义的Mongodb容器名称mongodb与Mongodb服务进行通信。< / p>

问题:

  1. 这是一个好习惯,例如,仅在嵌入式服务器上启动RESTful API服务。在生产中,没有另一个与Mongodb容器不同的Docker容器吗?
  2. 如果这是一个好习惯,那么如何配置以使本地嵌入式服务器上的RESTful API可以访问本地Docker容器上的Mongodb?

1 个答案:

答案 0 :(得分:0)

关于在Docker中运行数据库-太好了。您可能想从主机上挂载volumes来配置数据库以在其中存储数据,因为在容器中存储数据并不总是很方便的。配置通常由环境变量完成,并传递到共享卷中的docker和配置文件中。

网络本身不应该成为问题,Docker支持多种网络模式,使您可以与主机进行通信。用于生产目的最简单但不推荐的方法只是使用--network=host。这样可以防止Docker创建新的网络,并且容器共享您的localhost。这意味着您只需使用localhost作为主机名就可以从容器访问所有服务。

为什么不建议这样做:因为这样可以消除通常在容器中所有localhost网络可用后Docker授予的保护/隔离级别。