Мой сценарий:
У меня есть сервер с 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
Но проблема в том, что мой сервис не может подключиться к mongoDB по адресу localhost: 27017, потому что они не находятся в одной сети. Поэтому я добавляю опцию network_mode: "host"
в мой файл docker-compose. Это решает проблему, мой сервис может подключиться к mongoDB, работающему на моем сервере. Однако я больше не могу получить доступ к своему сервису через x.x.x.x: 8080
Мой вопрос:
Как я могу по-прежнему подключаться к своему сервису через x.x.x.x: 80 с опцией network_mode: "host"
? Или есть какой-то способ, которым мне не нужно использовать эту опцию, но мой сервис все еще может подключаться к экземпляру mongoDB?
Примечание: Экземпляр MongoDB устанавливается традиционным способом (yum install mongodb-org) и настраивается таким образом, чтобы к нему можно было получить доступ только через localhost: 27017 (или 127.0.0.1:27107) , Я не знаю почему или как, но так оно и есть, поэтому я не могу изменить строку подключения на mongodb: //x.x.x.x: 27017. Это просто не сработает.
Я также знаю, что могу добавить mongodb в качестве службы в файл docker-compose
для достижения своей цели, но я не хочу этого делать, поскольку в моем случае лучше управлять базой данных отдельно.