如何从主机连接到Docker Postgres容器

雷汉·穆克塔德(Rayhan Muktader)

我按照https://docs.docker.com/compose/rails/中的说明整理了Rails开发环境

它可以工作,但是我无法从主机连接到Postgres服务器。我正在运行macOS High Sierra。运行时,docker container ls我将其5432/tcp视为Postgres容器的端口。请注意,docker network inspect <postgress_container_ID>5432前面没有列出IP。运行时,我将获得172.18.0.2作为IP。

但是当我跑步时psql -h 172.18.0.2 -p 5432 -U postgres我得到

xpsql: could not connect to server: Operation timed out
  Is the server running on host "172.18.0.2" and accepting
  TCP/IP connections on port 5432?

我究竟做错了什么?

罗汉·莫希特(Rohan J Mohite)

通过查看详细信息5432 / tcp,在我看来您还没有导出端口号5432

如果您已导出端口,则它应该看起来像。

 0.0.0.0:5432->5432/tcp

然后使用主机IP地址(您的本地Mac机器ip),您应该可以连接,如果仍然无法运行,请共享您的docker命令-您如何运行容器?

Docker撰写文件

version: '3'
services:
  db:
    image: postgres
    ports:
     - "5432:5432"
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/airbnb
    ports:
      - "3000:3000"
    depends_on:
      - db

在您的docker-compose文件中,您没有公开端口号5432,因此从外部您将无法连接Postgres DB。

尝试添加端口:-在docker-compose文件中添加“ 5432:5432”然后使用您的计算机IP地址,您应该能够连接数据库。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章