运行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.yml
为RAILS_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 /应用程序容器。
- 从Docker容器执行本地机器上的命令
- 将docker映像configuration为可执行文件
- 如何在fig文件中提到多个django需求文件,用于跨dev,docker和prod服务器的docker部署?
- 如何捕捉build筑docker形象的变化?
- Docker使.sh可执行文件运行
- 列出docker映像的所有版本号
- docker-compose在以普通用户身份运行时出现错误“ImportError:No module named ssl_match_hostname”
- 是否有可能在docker mysql运行容器以及windows 10 mysql中使用3306端口(相同的端口)
- 如何使用–entrypoint将参数发送到docker中的命令