0

我在本地机器上用 Docker编写了一个Mongodb服务,主机名在docker-compose.yml中配置了 syntax container_name: mongodb,然后本着微服务的精神,我在一个轻量级的嵌入式服务器上启动了一个RESTful API 服务,比如Jetty,也在本地。

问题是本地 RESTful API 服务由于网络不同,无法在本地 Docker 容器上使用定义的 Mongodb 容器名称与 Mongodb 服务通信mongodb

问题:

  1. 这是一个好习惯吗,比如说在嵌入式服务器上启动 RESTful API 服务,尤其是。在生产中,没有另一个不同于 Mongodb 容器的 Docker 容器?
  2. 如果这是一个好的做法,如何配置以使本地嵌入式服务器上的 RESTful API 可以访问本地 Docker 容器上的 Mongodb?
4

1 回答 1

0

关于在其中运行数据库Docker- 这非常好。您可能希望volumes从主机挂载以配置数据库以将数据存储在那里,因为在容器中存储数据并不总是很方便。配置通常由环境变量完成,传递给docker位于共享卷中的配置文件。

网络本身应该不是问题,有不同的网络模式,由 支持Docker,允许您从主机进行通信。最简单但不推荐用于生产目的的方法是使用--network=host. 这可以防止Docker创建新的网络和容器共享您的localhost. 这意味着您可以仅使用localhost主机名从容器访问所有服务。

Docker为什么不推荐:因为这消除了保护/隔离级别,通常在您的所有 localhost 网络在容器中可用时立即授予。

于 2018-12-24T08:31:16.473 回答