postgresql - Postgres Docker 的 DataGrip 连接失败

标签 postgresql docker

我创建了一个 Docker 容器,如下所示:

docker run -e POSTGRES_USER=docker -e POSTGRES_PASSWORD=docker -e POSTGRES_DB=docker library/postgres

我现在想把它连接到Datagrip进行查询。当我尝试在 Datagrip 中设置连接时,它失败了。 DataGrip Connection Failed Error 我从 inspect container <container_id> 获取主机 IP

结果是 172.17.0.2在港口 5432 .

请参阅图片以供引用。 Config Settings for the container但是,当我尝试连接到 DataGrip 时,连接仍然失败。

有人知道怎么做吗?

最佳答案

DataGrip 无法连接到运行 Postgres 的容器的原因是您没有公开容器的任何端口,在本例中为 5432

您获取的容器的 IP 地址,即 172.17.0.2,是容器在 docker 容器网络中的内部 IP 地址,在您的例子中是 bridge,默认值如果您未指定 --network={NETWORK} 选项 docker run,则容器连接到的网络。

虽然有很多方法可以找到容器的“真实”IP 地址,但它们总是过于复杂,无法满足您的需求。 DataGrip 连接到您的 Postgres 容器的最简单方法是发布您的端口 5432 并将其映射到主机的相同端口(或任何其他可用端口),通过运行:

docker run -e POSTGRES_USER=docker -e POSTGRES_PASSWORD=docker -e POSTGRES_DB=docker -p 5432:5432 library/postgres

带有 -p 5432:5432 选项。

之后,您应该能够通过将 localhost 指定为主机来从 DataGrip 连接到您的容器。 Please see this screenshot for reference.

关于postgresql - Postgres Docker 的 DataGrip 连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47825130/

相关文章:

java - Maven 依赖项 :go-offline command issue

ruby - ActiveRecord::AdapterNotSpecified 数据库配置没有指定适配器

sql - 是否可以将 PostgreSQL(多行)查询结果存储到数组元素中?

docker - Traefik:级别=错误消息=“field not found, node: mywebsite”提供商名称=docker

amazon-web-services - AWS CLI查询是否从ecs describe-task-definition中提取图像?

python - AWS EC2 无法执行脚本 docker-compose

postgresql - float 的 postgresql to_char 格式化

c# - PostgreSQL:如何在 PostgreSQL 数据库中只插入一个反斜杠

sql - 如何从postgres中的查询中提取小时数

docker - 我想创建 2 个具有相同 IP 范围的 docker 网络