我的场景:
我有一个 IP xxxx 的服务器,在上面运行 MongoDB 实例。docker-compose.yml我还使用如下文件构建我的服务
version: "3"
services:
myApp:
image: myApplication
ports:
- "8080:8080"
environment:
SPRING_DATA_MONGODB_URI: mongodb://localhost:27017/myAppDb
Run Code Online (Sandbox Code Playgroud)
当我运行docker-compose up启动容器时,我可以通过 xxxx:8080 从我的计算机访问我的服务
但问题是我的服务无法连接到 localhost:27017 处的 mongoDB,因为它们不在同一网络上。因此,我将该选项添加network_mode: "host"到我的 docker-compose 文件中。它解决了问题,我的服务可以连接到我的服务器上运行的 mongoDB。但是,我无法再通过 xxxx:8080 访问我的服务
我的问题:
我如何仍然可以使用该选项通过 xxxx:80 连接到我的服务network_mode: "host"?或者有什么方法可以让我不需要使用该选项,但我的服务仍然可以连接到 mongoDB 实例?
注意: MongoDB 实例以传统方式安装(yum install mongodb-org),并设置为只能通过 localhost:27017(或 127.0.0.1:27107)访问。我不知道为什么或如何,但事实就是如此,所以我无法将连接字符串更改为 mongodb://xxxx:27017。它就是行不通。
我还知道我可以将 mongodb 添加为文件中的服务docker-compose来实现我的目标,但我不想这样做,因为就我而言,最好单独管理数据库。