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