如何将Ruby on Rails应用连接至宿主机Docker运行的Postgres数据库
问题原因
你的Rails数据库配置中缺少host参数,PostgreSQL适配器在未指定host时会默认尝试通过Unix域套接字连接本地数据库,而你通过Docker启动的Postgres容器未将Unix套接字映射到宿主机的/tmp目录,因此触发找不到套接字文件的报错。
修复方案
修改database.yml的development配置块,新增host指定走TCP协议连接容器映射的端口:
default: &default adapter: postgresql encoding: unicode pool: 5 development: <<: *default database: myapp_development user: user password: password host: 127.0.0.1 # 新增该配置 # 如果你修改了docker run的端口映射规则,需额外补充对应port配置,例如映射端口为5433时添加 port: 5433
验证排查步骤
- 执行
docker ps确认Postgres容器处于正常运行状态,端口映射规则为0.0.0.0:5432->5432/tcp - 本地终端执行
psql -h 127.0.0.1 -U user myapp_development,输入密码password验证是否可以正常连接数据库,能成功进入psql交互终端则说明数据库侧配置无问题。
内容的提问来源于stack exchange,提问作者user3895395
相关产品推荐
相关产品推荐

