将Docker容器应用程序连接到远程数据库服务器

时间:2020-02-12 01:02:28

标签: docker devops

如何使在docker容器中运行的spring boot应用程序连接到在远程服务器(非docker环境)中运行的postgres数据库。这是我的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'

远程PostgreSQL数据库计算机的IP为:192.168.2.50(主机名:postgresdb

我正在使用network_mode: "host"选项,并且可以正常工作,但是我相信这会打败使用docker网络的目的。还有哪些其他选项可以在不使用network_mode的情况下使其工作? docker计算机和远程数据库服务器上的IP地址和必要端口都被列入白名单,并且可以通过防火墙进行访问。

1 个答案:

答案 0 :(得分:0)

这样的实现显然是行不通的。 由于数据库是远程部署的,因此唯一可行的解​​决方案将提供环境变量。

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")