加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在尝试“docker up”时获取“致命:角色”根“

发布时间:2020-12-17 03:18:43 所属栏目:百科 来源:网络整理
导读:我开始使用现有的使用Docker的Rails项目.我已经使用Rails很长一段时间但从未使用过Docker. 在我做了一个docker build之后.我尝试做一个docker-compose,但我得到: FATAL: role “root” does not exist /usr/local/bundle/gems/activerecord-4.2.5.2/lib/act
我开始使用现有的使用Docker的Rails项目.我已经使用Rails很长一段时间但从未使用过Docker.

在我做了一个docker build之后.我尝试做一个docker-compose,但我得到:

FATAL: role “root” does not exist
/usr/local/bundle/gems/activerecord-4.2.5.2/lib/active_record/connection_adapters/postgresql_adapter.rb:661:in `rescue in connect’: FATAL: role “root” does not exist (ActiveRecord::NoDatabaseError)

在我看来,Docker机器可能试图以root用户身份连接到数据库,但是没有名为root的角色,因此连接正确失败.

我不知道的是为什么Docker显然试图以root身份连接数据库,以及如何让它使用正确的用户.

这是我的database.yml:

development:
  database: my_app_development
  adapter: postgresql
  encoding: unicode
  pool: 5

任何帮助表示赞赏.

编辑:这是我的docker-compose.yml:

web:
  build: .
  volumes:
    - .:/my_app
  ports:
    - "3000:3000"
  links:
    - postgres
    - redis
    - mailcatcher
  env_file:
    - 'config/application.yml'
postgres:
  image: postgres:9.4
  ports:
    - "5432"
  env_file:
    - 'config/database.yml'
redis:
  image: redis:3.0.6
mailcatcher:
  image: schickling/mailcatcher
  ports:
    - "1080:1080"

解决方法

您可能希望更新compose和数据库yml,如下所示.使用database.yml中的预期db用户和密码.此外,您可以使这是一个环境变量.但首先尝试使用postgres db docker映像的默认值,如下所示;

database.yml的

development:
  database: my_app_development
  adapter: postgresql
  encoding: unicode
  pool: 5
  username: postgres
  password:
  host: postgres(db name in docker-compose.yml)

泊坞窗,compose.yml

web:
        build: .
        command: bundle exec rails s -p 3000 -b '0.0.0.0'
        volumes:
          - .:/my_app
        ports:
          - "3000:3000"
        links:
          - postgres
          - redis
          - mailcatcher
      postgres:
        image: postgres:9.4
        ports:
          - "5432"
      redis:
        image: redis:3.0.6
      mailcatcher:
        image: schickling/mailcatcher
        ports:
            - "1080:1080"

我不认为你想留下来

env_file:
      - 'config/database.yml'

env_file:
      - 'config/application.yml'

然后使用docker-compose运行web rake db:create创建数据库

我添加了命令指令,因为我不知道您的Dockerfile是什么样的.但是如果您使用docker build -t app-name成功构建了应用程序映像,则可以将其删除并运行docker-compose.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读