在客户端Docker和主机上的Postgres服务器之间进行连接

时间:2019-06-05 07:01:58

标签: postgresql docker

我的主机上有一个Postgres服务器,我想制作一个连接到该Postgres服务器的Docker容器。

所以我想我需要将IP:5432连接上的postgres服务器公开给docker。在docker上公开5432,并在docker内部指定正确的连接信息,例如:

SQLALCHEMY_DATABASE_URI = "postgresql+psycopg2://username:password@IP/db_name"

主机docker IP是:

docker0   Link encap:Ethernet  HWaddr 02:42:b3:d9:eb:e2  
          inet addr:172.17.0.1  Bcast:172.17.255.255  Mask:255.255.0.0
          inet6 addr: fe80::42:b3ff:fed9:ebe2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:213512 errors:0 dropped:0 overruns:0 frame:0
          TX packets:351284 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:9157933 (9.1 MB)  TX bytes:826914241 (826.9 MB)

docker_gwbridge Link encap:Ethernet  HWaddr 02:42:5c:b9:3b:0a  
          inet addr:172.18.0.1  Bcast:172.18.255.255  Mask:255.255.0.0
          inet6 addr: fe80::42:5cff:feb9:3b0a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:436 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:64397 (64.3 KB)

我缺少什么,以及如何将postgres服务器暴露给主机侧的相对端口。

1 个答案:

答案 0 :(得分:2)

也许您可以考虑对容器使用网络模式:host

这意味着容器并不是与主机网络真正隔离开的,可以使用localhost:5432连接到数据库。