postgresql - 无法从 docker 上的 Rails 控制台连接到数据库

标签 postgresql ruby-on-rails-3 docker digital-ocean rails-console

我使用 DockersDigitalocean 上设置了我的 Rails 项目。这是我的 docker-compose.prod.yml 文件。

version: "2"

volumes:
 db-data:
   external: false

services:
 db:
  image: postgres
  env_file: .env.production
 volumes:
   - db-data:/var/lib/postgresql/data

app:
 build: .
 env_file: .env
 environment:
   RAILS_ENV: production
 ports:
   - "3000:3000"
 depends_on:
   - db

这是我的database.yml文件

default: &default
 adapter: postgresql
 encoding: unicode
 host: db
 username: <%= ENV["POSTGRES_USER"] %>
 password: <%= ENV["POSTGRES_PASSWORD"] %>
 # For details on connection pooling, see rails configuration guide
 # http://guides.rubyonrails.org/configuring.html#database-pooling
 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
 <<: *default
 database:  project_development

test:
 <<: *default
 database: project_test

production:
 <<: *default
 host: <%= ENV["POSTGRES_HOST"] %>
 database: project_production

我创建了两个 docker 图像。一个用于 app,一个用于 postgres/db

我的应用程序 在生产环境中运行良好。我可以在生产环境中从我的 web 页面创建和删除记录。

但是,当我尝试通过以下命令从 docker bash 访问 production database 的 rails console 时:

docker run -i -t project_app:latest bash 

访问控制台:

RAILS_ENV=production rails c

Rails Console 中,每当我尝试访问任何 model 数据或尝试执行任何查询(i.e Model.first 等)时,我是无法访问 postgres 数据库。它向我显示以下错误:

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/run/postgresql/.s.PGSQL.5432"?

我已经尝试了很多可能的解决方案来解决这个问题,但无法解决这个问题。

请帮帮我!提前致谢

最佳答案

经过多次尝试,我终于找到了解决办法。我正在使用 docker run -i -t project_app:latest bash 命令访问 container 并运行 rails console 命令,这是错误的。

访问容器终端的正确命令是

 docker exec -it project_app /bin/bash

访问 terminal 后,我能够成功运行 queryUser.first inside rails console

关于postgresql - 无法从 docker 上的 Rails 控制台连接到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44275472/

相关文章:

sql - 最好有一个字段 "City"或一个表 "City"?

postgresql - 将表格中的两行合并为一行

regex - 使用正则表达式验证密码

ruby-on-rails - Rails 中的邻近搜索

docker - 当我的开发环境将我的代码库挂载到容器中时,如何构建 docker 镜像?

java - Hibernate 和 Postgres 大对象 - 在实体 finalize() 方法中释放 Blob 资源

sql - 在 SQL 语句中调用函数

ruby-on-rails - Rails/HAML : image_tag inside a link_to helper

c# - 尝试发布到Azure容器注册表时获取 “Running the docker.exe login command failed.”

java - 如何在 Fedora 28 中为 Docker 安装 Tomcat 容器?