如何从(未经过安装的)Python应用程序连接到dockerized PostgreSQL

时间:2015-07-26 11:03:21

标签: python postgresql docker

我已按照说明here通过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拍摄还是缺少某些东西?

2 个答案:

答案 0 :(得分:3)

对于postgresql,您需要export the port,然后就可以像在本地运行一样连接到它。

docker run --name postgresql -d -p 5432:5432 sameersbn/postgresql:9.4-2

如果您不理解上述链接,建议您仔细阅读getting starting guide

答案 1 :(得分:1)

正如@Burhan Khalid所说,您可以使用以下方式公开您的容器端口:

docker run --name postgresql -d -p 5432:5432 sameersbn/postgresql:9.4-2

要连接到PostgreSQL容器,您可以直接连接到:127.0.0.1:5432。您无法使用localhost:5432,因为它会尝试在您的主机中找到套接字文件(套接字文件位于容器中)。

另一种解决方案是使用您的容器IP地址。要查找容器IP地址,您可以使用:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' <your-container-id>

但是,如果重新启动容器,容器将获得一个新的IP。因此,您需要重新配置数据库配置。