当我从oh-my-env切换成本地书写rails服务的时候,发现执行
bin/rails server
连接不上本地docker中启动的PostgreSQL数据库。一下是我的排查过程。
一,我先确定本地能否连接到PostgreSQL:
- 获取 PostgreSQL 容器的 IP 地址:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器名称或容器 ID>
将 <容器名称或容器 ID>
替换为你的 PostgreSQL 容器的名称或 ID。命令将返回 PostgreSQL 容器的 IP 地址。
- 使用
psql
连接到 PostgreSQL 数据库。在终端中运行以下命令:
psql -h <PostgreSQL 容器的 IP 地址> -p 5432 -U <用户名> -d <数据库名>
如果连接成功,你将会看到一个以 =#
开头的提示符,表示你已成功连接到 PostgreSQL 数据库。如果连接失败,可能会显示与连接问题相关的错误消息。
发现本地没问题。
二,排查database.yml配置代码:
<<: *default
database: XXX_dev
username: XXX
password: XXX.123123
host: db-for-sbbs
port: 5432
发现问题:host不正确,本地启动的docker host应该是localhost
database: XXX_dev
username: XXX
password: XXX.123123
host: localhost
port: 5432