在Docker中运行rake db:create时出错

时间:2015-06-05 14:37:17

标签: ruby-on-rails ruby postgresql docker

我是Docker的新手,然后按照他们的官方教程运行Ruby on Rails和Postgresql。当我运行docker-compose up时,一切正常,但当我尝试命令docker-compose run web rake db:create时,我收到FATAL: role "root" does not exist的错误。

database.yml

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5
  host: db

development:
  <<: *default
  database: myapp_development

test:
  <<: *default
  database: myapp_test

production:
  <<: *default
  database: myapp_production
  username: postgres
  password:

3 个答案:

答案 0 :(得分:0)

您正在以root身份运行该命令,并且它尝试使用相同的用户名连接到数据库。您还没有在PostgreSQL中创建用户root,因此您必须这样做。

我建议创建另一个用户名并使用它进行连接,即使名称root在PostgreSQL中没有特殊含义,但通常最好为每个系统分别设置用户/角色。

您需要修改数据库连接设置以反映新用户名。

答案 1 :(得分:0)

我认为最好在RAILS_ENV

中设置docker-compose.yml的环境值

答案 2 :(得分:0)

如果您正在使用官方的postgres图像from the docker hub,则基于该图像运行容器时启动的postgres服务器的默认用户名是“postgres”,并且不需要密码。您应该将yaml文件更新为:

database.yml中:

    default: &default
      adapter: postgresql
      encoding: unicode
      pool: 5
      host: db
      username: postgres

    development:
      <<: *default
      database: myapp_development

    test:
      <<: *default
      database: myapp_test

    production:
      <<: *default
      database: myapp_production

假设所有三个数据库都在同一个容器(db)上运行,并且该容器已作为“db”链接到您的rails /应用程序容器。