Rake无法在Docker / Rails / Postgres设置中运行Rspec规范(但是web应用程序工作正常)

在使用Heroku-docker解决scheme时,是否需要特殊的步骤或configuration来获取Rails(3.2.21)testing数据库(例如Rspec规格)在Docker下工作?

我正在使用Docker Toolkit(Docker快速入门terminal)在本地运行我的Heroku应用程序, 除了运行规范以外的所有内容正常工作。

这工作:

docker-compose run web rake db:reset 

而Web应用程序工作,阅读和写入所有种子值加载数据库。

但是,任何创build或使用testing数据库的命令都会失败:

 docker-compose run web rake db:test:prepare docker-compose run web rake db:test:load docker-compose run web rake spec docker-compose run web bundle exec rake spec 

所有抛出的错误:

 PG::ConnectionBad: FATAL: role "root" does not exist 

我正在使用Heroku的postgres图像,看起来像一个app.json:

 { "name": "My App", "description": "Localized Docker Setup", "image": "hrails200", "addons": [ "heroku-postgresql" ] } 

(hrails200是修改为使用Ruby 2.0.0的heroku / ruby​​镜像)

docker-compose.yml文件结束于:

 herokuPostgresql: image: postgres 

网站和工作人员有一个指向Postgres的链接条目:

  links: - herokuPostgresql 

我的config / database.yml如下所示:

 default: &default adapter: postgresql encoding: unicode pool: 5 development: <<: *default database: docker_mondo_dev test: <<: *default database: docker_mondo_test 

当连接到Postgres时,它默认为当前的Unix用户( $USER )。 在Docker下,默认情况下是“root”。 但是,Postgres默认没有任何名为'root'的用户。 相反,超级用户名为“postgres”。

我认为你的web应用程序是指定一个数据库用户名,而你的testing不是。 您可以尝试将PGUSER环境variables设置为postgres