运行rake db时出现错误:在Docker中创build

我是Docker中的新成员,然后在运行Ruby on Rails和Postgresql的官方教程。 当我运行docker-compose up但是当我尝试命令docker-compose run web rake db:create ,我得到了一个FATAL: role "root" does not exist错误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: 

您以root用户身份运行该命令,并尝试使用相同的用户名连接到数据库。 你还没有在PostgreSQL中创build一个用户根,所以你必须这样做。

我build议创build另一个用户名,并使用它来连接,即使名称root在PostgreSQL中没有特殊的含义,但通常每个系统都有独立的用户/angular色会更好。

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

我认为最好在docker-compose.ymlRAILS_ENV设置环境值

如果您使用的是Docker Hub的官方postgres镜像,那么在运行基于该镜像的容器时启动的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 /应用程序容器。