如何从(未解耦的)Python应用程序连接到dockerized PostgreSQL
我按照这里的说明通过Docker安装PostgreSQL。 其实我用了以下两个命令:
Run docker run --name postgresql -d sameersbn/postgresql:9.4-2 Login sudo docker exec -it postgresql sudo -u postgres psql
然后我做\conninfo
和我得到:
# You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432"
接下来我想做什么(但是不知道怎么做)就是连接到这个数据库,这个数据库被认为是一个在我的本地机器上运行的外部Python应用程序(而不是另一个文档)。
我应该射击localhost:5432
还是有什么缺失?
您需要导出 postgresql 的端口 ,然后可以像连接本地一样连接到它。
docker run --name postgresql -d -p 5432:5432 sameersbn/postgresql:9.4-2
如果你不明白上面的链接,我build议你通读入门指南 。
正如@Burhan Khalid所说的,你可以使用以下方式暴露你的容器端口:
docker run --name postgresql -d -p 5432:5432 sameersbn/postgresql:9.4-2
要连接到PostgreSQL容器,可以直接连接到: 127.0.0.1:5432
: 127.0.0.1:5432
。 你不能使用localhost:5432
,因为它会尝试在你的主机上find一个套接字文件(套接字文件在容器中)。
另一个解决scheme是使用你的容器IP地址。 要查找容器IP地址,您可以使用:
docker inspect --format '{{ .NetworkSettings.IPAddress }}' <your-container-id>
但是,如果你重新启动你的容器,容器将得到一个新的IP。 所以,你需要重新configuration你的数据库configuration。