首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何连接到从外部主机用docker-compose创建的postgres

如何连接到从外部主机用docker-compose创建的postgres
EN

Stack Overflow用户
提问于 2020-02-21 14:05:28
回答 2查看 8.8K关注 0票数 7

我认为这个问题应该很容易解决,但我正在拔出我的头发。我有以下的船坞组合:

代码语言:javascript
复制
version: "3"
services:

  pg-db:
    image: postgres:11
    environment:
      POSTGRES_PASSWORD: "postgres"
      POSTGRES_USER: "postgres"
      POSTGRES_DB: "postgres"
    ports:
      - 5432:5432
    #network_mode: host

然后运行docker-compose up,它启动容器

代码语言:javascript
复制
pg-db_1_78e7ec4a95e6 | 2020-02-21 13:53:53.928 UTC [1] LOG:  database system is ready to accept connections

我可以和码头经理联系

代码语言:javascript
复制
docker exec -it docker_pg-db-compose_1_78e7ec4a95e6 psql -h pg-db -U postgres postgres

但我无法通过“裸露的”psql连接到它:

代码语言:javascript
复制
psql postgresql://postgres:postgres@localhost:5432/postgres

psql: could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?

psql postgresql://postgres:postgres@pg-dg:5432/postgres
psql: could not translate host name "pg-db" to address: Name or service not known

我试过用network_mode,但没什么用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-21 15:00:36

启动坞-组合之后,您需要通过以下操作获得坞容器ip:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

然后你可以做postgresql://postgres:postgres@<container idp>:5432/postgres你应该能够连接到它

票数 9
EN

Stack Overflow用户

发布于 2020-02-21 15:07:27

我使用的是docker-compose文件的修改版本,该文件在Postgres DockerHub页面中提供。

代码语言:javascript
复制
version: '3.1'
services:
  db:
    image: postgres:11
    restart: always
    ports:
      - 5432:5432
    environment:
      POSTGRES_PASSWORD: postgres

当我运行docker-compose up时,我会得到一个非常类似的“就绪”消息:

代码语言:javascript
复制
db_1  | 2020-02-21 14:34:17.826 UTC [1] LOG:  database system is ready to accept connections

此时,我可以使用psql连接Postgres。

代码语言:javascript
复制
$ psql -h localhost -U postgres
Password for user postgres: 
psql (12.2, server 11.7 (Debian 11.7-1.pgdg90+1))
Type "help" for help.

postgres=#

我还可以使用您提供的连接字符串和postico进行连接:

这些差异是微妙的,我不确定重新启动策略在这里是否有任何不同,但请尝试一下。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60340228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档