Подключение приложения-контейнера docker к удаленному серверу баз данных. - PullRequest
0 голосов
/ 12 февраля 2020

Как я могу заставить мое весеннее загрузочное приложение работать в контейнерах docker, подключаться к базе данных postgres, которая работает на удаленном сервере (не docker среда). Вот мой docker-compose.yml файл:

version: "3.3"
  services:
    app1:
       image: repo/app1:latest
       ports:
           - 8000:8000
       restart: always
       network_mode: "host"
       extra_hosts:
           - 'postgresdb:192.168.2.50'

   app2:
       image: repo/app2:latest
       ports:
           - 8001:8001
       restart: always
       network_mode: "host"
       extra_hosts:
           - 'postgresdb:192.168.2.50'

IP удаленного PostgreSQL компьютера базы данных: 192.168.2.50 (имя хоста: postgresdb)

Я использую опцию network_mode: "host" и работает без каких-либо проблем, но я считаю, что это победит цель использования docker сети. Какие другие варианты доступны, чтобы это работало без использования network_mode? IP-адрес и необходимые порты на компьютере docker и на удаленном сервере баз данных находятся в белом списке и имеют доступ через брандмауэры.

1 Ответ

0 голосов
/ 12 февраля 2020

Такая реализация, очевидно, не будет работать. Поскольку ваша база данных развернута удаленно, единственное рабочее решение будет снабжено переменными среды.

version: "3.3"
  services:
    app1:
     image: repo/app1:latest
     ports:
       - 8000:8000
     restart: always
     network_mode: "host"
     environment:
       - DBHOST: "192.168.2.50"

Все, что вам нужно в вашем приложении - это использовать эту переменную. Python пример:

dbhost = os.getenv("DBHOST")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...