[英]Unable to Connect Postgre which is on Dockers Container with Talend
[英]Unable to connect to database from rails console on dockers
我使用Dockers
在Digitalocean
設置了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
成功運行query
即User.first
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.