当试图做“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