如何将 Rails 应用程序连接到主机上的 docker postgres

Posted

技术标签:

【中文标题】如何将 Rails 应用程序连接到主机上的 docker postgres【英文标题】:how to connect Rails app to docker postgres on host machine 【发布时间】:2021-12-23 11:31:00 【问题描述】:

我想像这样在没有 docker compose 的情况下运行 postgres 容器,并在 Ruby on Rails 应用程序中连接到它:

docker run -p 5432:5432 -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password -e POSTGRES_DB=myapp_development postgres:13.4

我的 database.yml 文件如下所示

default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: 5

development:
  <<: *default
  database: myapp_development
  user: user
  password: password

但是,在运行应用程序时出现以下错误:

无法连接到服务器:没有这样的文件或目录是服务器 在本地运行并接受 Unix 域套接字上的连接 “/tmp/.s.PGSQL.5432”?

我目前不想使用 docker compose

我错过了什么?

【问题讨论】:

【参考方案1】:

运行后

docker run -p 5432:5432 -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password -e POSTGRES_DB=myapp_development postgres:13.4

我可以通过运行从我的终端连接 postgresql

psql -h localhost  -U user myapp_development

所以,我猜你只需要将host 选项添加到database.yml

default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: 5
  host: localhost

development:
  <<: *default
  database: myapp_development
  user: user
  password: password

【讨论】:

以上是关于如何将 Rails 应用程序连接到主机上的 docker postgres的主要内容,如果未能解决你的问题,请参考以下文章

PHP 本地主机应用程序连接到服务器数据库

如何从 Windows 10 上的容器连接到 docker 主机(Docker for Windows)

Rails 开发 - 无法连接到“localhost”上的 MySQL 服务器 (10061)

虚拟机无法连接到主机上的网络咋办?

将 Rails 连接到 AWS MySQL 数据库

如何将 jQuery Datepicker 连接到我的 Ruby on Rails 表单?