簡體   English   中英

無法從dockers上的rails控制台連接到數據庫

[英]Unable to connect to database from rails console on dockers

我使用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

我的application在生產上運行良好。 我可以在制作時從我的web創建和刪除記錄。

但是,當我嘗試通過以下命令從docker bash訪問production database rails控制台時:

docker run -i -t project_app:latest bash 

訪問控制台:

RAILS_ENV=production rails c

Rails Console內部,每當我嘗試訪問任何model數據或嘗試執行任何查詢( ie 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你沒有提供你的應用程序需要用作憑據的env變種。

所以在這里使用已經設置了env vars的docker-compose:

env_file: .env

所以這樣運行:

docker run --env-file .env -i -t project_app:latest bash

經過很多努力,我找到了解決方案。 我正在使用docker run -i -t project_app:latest bash命令來訪問container並運行rails console命令,這是錯誤的。

訪問container終端的正確命令是

 docker exec -it project_app /bin/bash

訪問terminal我能夠在rails console成功運行queryUser.first

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM