我按照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?
我究竟做错了什么?
通过查看详细信息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] 删除。
我来说两句