如何使在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地址和必要端口都被列入白名单,并且可以通过防火墙进行访问。
答案 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")