【问题标题】:How to connect to a dockerized PostgreSQL from (an undockerized) Python app如何从(非泊坞化的)Python 应用程序连接到泊坞化的 PostgreSQL
【发布时间】:2015-10-16 15:25:15
【问题描述】:

我已按照说明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 拍摄还是缺少什​​么?

【问题讨论】:

    标签: python postgresql docker


    【解决方案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。所以,你需要重新配置你的数据库配置。

    【讨论】:

      【解决方案2】:

      postgresql需要export the port,然后就可以像本地运行一样连接了。

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

      如果你不明白上面的链接,我建议你阅读getting starting guide

      【讨论】:

        猜你喜欢
        • 2017-10-12
        • 2018-02-07
        • 2018-12-20
        • 2019-06-28
        • 2017-02-02
        • 2021-11-05
        • 2016-10-20
        • 1970-01-01
        • 2018-04-03
        相关资源
        最近更新 更多