【发布时间】:2021-12-29 07:52:17
【问题描述】:
我正在玩 Docker,想在 docker 容器中设置 postgreSQL,然后从(非 dockerized)Ruby on Rails 应用程序连接到它。这是 docker compose 文件 - 我正在关注 this approach here。
version: "3"
services:
db:
image: "postgres:13"
container_name: "postgres_dev"
environment:
POSTGRES_PASSWORD: "pgdev2021"
ports:
- "54320:5432"
volumes:
- pgdata://Users/thomas/Documents/Production/PostgreSQL/dbstorage
volumes:
pgdata:
但是当我尝试 e. G。运行“Rails db:prepare”,我得到这个错误:
rails aborted!
ActiveRecord::ConnectionNotEstablished: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.54320"?
/Users/thomas/Documents/Websites/rails-frontend/bin/rails:5:in `<top (required)>'
/Users/thomas/Documents/Websites/rails-frontend/bin/spring:10:in `block in <top (required)>'
/Users/thomas/Documents/Websites/rails-frontend/bin/spring:7:in `<top (required)>'
Caused by:
PG::ConnectionBad: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.54320"?
/Users/thomas/Documents/Websites/rails-frontend/bin/rails:5:in `<top (required)>'
/Users/thomas/Documents/Websites/rails-frontend/bin/spring:10:in `block in <top (required)>'
/Users/thomas/Documents/Websites/rails-frontend/bin/spring:7:in `<top (required)>'
Tasks: TOP => db:prepare
(See full trace by running task with --trace)
当我检查时,容器正在运行
编辑:database.yml
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
port: 54320
user: postgres
development:
<<: *default
database: db_development
test:
<<: *default
database: db_test
production:
<<: *default
database: db_production
username: postgres
password: <%= ENV['MY_DB_PASSWORD'] %>
【问题讨论】:
-
没有帮助,同样的错误。我尝试了下面的行,docker exec .... bash,然后是 psql,但这也不起作用。我可以 bash 进入 docker,但 psql 给出以下错误:“psql:错误:连接到“localhost”(127.0.0.1)的服务器,端口 54320 失败:连接被拒绝。服务器是否在该主机上运行并接受 TCP/IP连接?”
-
在容器内你必须连接
localhost:5432而不是54320。 -
我正在尝试从主机连接到容器......我想我需要以某种方式找到容器的 IP,然后将其作为“主机”添加到我的 database.yml 中?
标签: ruby-on-rails postgresql docker