【发布时间】:2017-08-27 15:29:58
【问题描述】:
启动我的 Rails 应用程序时,我在 Linode 服务器 (Ubuntu 17.04) 上看到以下错误:
PG::ConnectionBad: FATAL: password authentication failed for user "postgres"
奇怪的是,这只发生在我的远程服务器上。在本地(在我的 Mac 上),它工作正常。我有以下 docker-compose.yml 文件:
version: "2"
services:
postgres:
image: postgres:9.6
ports:
- "5432:5432"
environment:
POSTGRES_DB: "${DATABASE_NAME}"
POSTGRES_PASSWORD: "${DATABASE_PASSWORD}"
volumes:
- postgres-data:/var/lib/postgresql/data
redis:
image: redis:latest
ports:
- "6379:6379"
volumes:
postgres-data:
driver: local
应该将 Postgres 绑定到 localhost 上的端口 5432 并将密码设置为 DATABASE_PASSWORD 环境变量。如果我在服务器上运行ps aux | grep 5432,我可以看到 Docker 进程运行正常:
root 29550 0.0 0.2 34472 2888 ? Sl 01:34 0:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 5432 -container-ip 172.18.0.3 -container-port 5432
所以我无法弄清楚为什么我会收到密码验证失败的错误消息。
我的 config/database.yml 文件:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
host: localhost
username: postgres
...
production:
<<: *default
database: <%= ENV['DATABASE_NAME'] %>
password: <%= ENV['DATABASE_PASSWORD'] %>
变量是在我的环境中设置的,我可以从 shell 中正确地回显它们。
任何帮助将不胜感激!谢谢
【问题讨论】:
-
第一次运行 docker-compose 时 /var/lib/postgresql/data 是否为空?
-
/var/lib/postgresql/data在我的开发盒或产品盒中都不存在。它不是 Docker 容器中的目录吗?我不知道如何访问它来检查 -
是的,对不起,我的错
标签: ruby-on-rails postgresql docker-compose