当试图做“docker起来”时,得到“致命:angular色”根“不存在”
我开始使用使用Docker的现有Rails项目。 我已经使用Rails很长一段时间,但从来没有Docker。
在我做一个docker build .
我试图做一个docker-compose up
,但我得到:
FATAL:“root”angular色不存在/usr/local/bundle/gems/activerecord-4.2.5.2/lib/active_record/connection_adapters/postgresql_adapter.rb:661:in`rescue in connect':FATAL:role“root”does不存在(ActiveRecord :: NoDatabaseError)
在我看来,Docker机器可能试图以root
用户身份连接到数据库,但没有称为root
的angular色,所以连接失败。
我不知道的是为什么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"
您可能想要如下更新您的撰写和数据库yml。 预期的数据库用户和密码在database.yml
。 此外,你可以使这是一个环境variables。 但首先尝试postgres数据库泊坞窗图像的默认值,如下所示:
database.yml
development: database: my_app_development adapter: postgresql encoding: unicode pool: 5 username: postgres password: host: postgres(db name in docker-compose.yml)
docker-compose.yml
web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' volumes: - .:/my_app ports: - "3000:3000" links: - postgres - redis - mailcatcher postgres: image: postgres:9.4 ports: - "5432" redis: image: redis:3.0.6 mailcatcher: image: schickling/mailcatcher ports: - "1080:1080"
我不认为你想保持
env_file: - 'config/database.yml'
和
env_file: - 'config/application.yml'
然后用docker-compose run web rake db:create
我添加了命令指令,因为我不知道你的Dockerfile
是什么样的。 但是,如果您使用docker build -t app-name .
成功构build应用程序图像docker build -t app-name .
,你可以删除它,只需运行docker-compose up
。
如果没有在database.yml
设置显式用户,它将尝试使用root
用户,因为这是postgres在容器中运行的相同用户。 要解决这个问题,请尝试设置您的database.yml
为:
development: database: my_app_development adapter: postgresql encoding: unicode pool: 5 username: postgres
请注意添加用户名字段。
使用docker-compose,它会尝试在运行之间保留卷; 由于用户只能在新数据库上创build,因此可能需要使用docker-compose rm -v database
来删除容器和关联的卷。
然后尝试docker-compose up --build
。
资料来源: https : //github.com/docker-library/postgres/issues/41#issuecomment-167603905