【发布时间】:2016-10-24 13:19:32
【问题描述】:
我开始使用现有的使用 Docker 的 Rails 项目。我已经使用 Rails 很长时间了,但从未使用过 Docker。
在我执行docker build . 之后,我尝试执行docker-compose up,但我得到:
致命:角色“root”不存在 /usr/local/bundle/gems/activerecord-4.2.5.2/lib/active_record/connection_adapters/postgresql_adapter.rb:661:in `rescue in connect': FATAL: 角色“root”不存在(ActiveRecord::NoDatabaseError)
在我看来,Docker 机器可能正试图以root 用户身份连接到数据库,但没有名为root 的角色,所以连接失败了。
我不知道为什么 Docker 显然试图以 root 的身份连接到数据库,以及如何让它使用正确的用户。
这是我的database.yml:
development:
database: my_app_development
adapter: postgresql
encoding: unicode
pool: 5
感谢任何帮助。
编辑:这是我的docker-compose.yml:
web:
build: .
volumes:
- .:/my_app
ports:
- "3000:3000"
links:
- postgres
- redis
- mailcatcher
env_file:
- 'config/application.yml'
postgres:
image: postgres:9.4
ports:
- "5432"
env_file:
- 'config/database.yml'
redis:
image: redis:3.0.6
mailcatcher:
image: schickling/mailcatcher
ports:
- "1080:1080"
【问题讨论】:
-
你的 docker-compose.yml 看起来怎么样?您是否为 postgres 使用单独的容器?
-
嘿勒坎!我已经编辑了我的答案以包括
docker-compose.yml。我不知道如何知道我是否在为 PostgreSQL 使用单独的容器。 -
是的,杰斯!因此,您似乎正在使用与 docker-compose.yml 不同的容器。我认为您将使用 postgres 的 env vars 更新撰写文件。
-
好的,谢谢。愚蠢的问题:我该怎么做?
标签: ruby-on-rails postgresql docker