我是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:发布于 2015-06-06 18:00:00
您正在以root用户身份运行该命令,并且它正在尝试使用相同的用户名连接到数据库。您尚未在PostgreSQL中创建用户根目录,因此必须这样做。
我建议创建另一个用户名并将其用于连接,即使根名称在PostgreSQL中没有特殊含义,但通常每个系统都有单独的用户/角色更好。
您需要修改数据库连接设置以反映新用户名。
发布于 2015-06-07 15:36:04
我认为最好在您的docker-compose.yml中为RAILS_ENV设置环境值
发布于 2016-01-07 02:01:54
如果您使用的是官方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/应用程序容器。
https://stackoverflow.com/questions/30669274
复制相似问题