83376


データベース等をcreateした後に `rails db` でデータベースのコンソールに入ろうとすると `Password for user root:`
と表示されてパスワードの入力を求められます。 postgressというユーザは設定していますが、
rootというユーザは設定した覚えがないので、どうしたらパスワード入力を回避できるのでしょうか？  
`root`, `postgress` と適当に入力しても `psql: FATAL: password authentication failed for
user "root"` と表示されます。

ご存知の方、教えて下さるととても助かります。  
宜しくお願い致します。

Dockerfile

[code]

    FROM ruby:2.6.3
    RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
    RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
    RUN apt-get update && apt-get install -y \
      build-essential \
      libpq-dev \
      nodejs \
      postgresql-client \
      yarn
    
    
    WORKDIR /sample-sample
    COPY Gemfile Gemfile.lock /sample-sample
    RUN bundle install
    
[/code]

docker-compose.yml

[code]

    version: '3'
    
    volumes:
      db-data:
    
    services:
      web:
        build: .
        # portsは -pの役割
        ports:
          - '8888:8888'
        # volumesは -vの役割
        volumes:
          - '.:/sample-sample'
        # 環境変数に設定される
        environment:
          - 'DATABASE_PASSWORD=postgres'
    
        # ttyは -itのtを意味してる
        tty: true
        # -iを意味してる
        stdin_open: true
        # 先にdbを作成して下さいと指定する。
        depends_on:
          - db
        # webからdbにアクセスできるようになる。
        links:
          - db
    
      db:
        image: postgres
        ports:
          - 5432:5432
        environment:
          - 'POSTGRES_USER=postgres'
          - 'POSTGRES_PASSWORD=postgres'
    
        # コンテナが削除されてもデータは残るようにローカル側のフォルダに保存するように設定する。
        # 下記のようなフォルダパスはなくdocker側でデータが管理される。実際のローカル環境からはアクセス出来ない。
        # これをローカルで管理できるように変更したい。
        # .に変更したみたけど、権限の関係かdbがエラーで落ちるようになった。。
        volumes:
          - 'db-data:/var/lib/postgresql/data'
    
[/code]

railsのデータベース設定  
`config/database.yml`

[code]

    # PostgreSQL. Versions 9.3 and up are supported.
    #
    # Install the pg driver:
    #   gem install pg
    # On macOS with Homebrew:
    #   gem install pg -- --with-pg-config=/usr/local/bin/pg_config
    # On macOS with MacPorts:
    #   gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
    # On Windows:
    #   gem install pg
    #       Choose the win32 build.
    #       Install PostgreSQL and put its /bin directory on your path.
    #
    # Configure Using Gemfile
    # gem 'pg'
    #
    default: &default
      adapter: postgresql
      encoding: unicode
      # For details on connection pooling, see Rails configuration guide
      # https://guides.rubyonrails.org/configuring.html#database-pooling
      host: db
      user: postgres
      port: 5432
      password: <%= ENV.fetch("DATABASE_PASSWORD")%>
      pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
    
    development:
      <<: *default
      database: sample_sample_development
    
      # The specified database role being used to connect to postgres.
      # To create additional roles in postgres see `$ createuser --help`.
      # When left blank, postgres will use the default role. This is
      # the same name as the operating system user that initialized the database.
      #username: sample_sample
    
      # The password associated with the postgres role (username).
      #password:
    
      # Connect on a TCP socket. Omitted by default since the client uses a
      # domain socket that doesn't need configuration. Windows does not have
      # domain sockets, so uncomment these lines.
      #host: localhost
    
      # The TCP port the server listens on. Defaults to 5432.
      # If your server runs on a different port number, change accordingly.
      #port: 5432
    
      # Schema search path. The server defaults to $user,public
      #schema_search_path: myapp,sharedapp,public
    
      # Minimum log levels, in increasing order:
      #   debug5, debug4, debug3, debug2, debug1,
      #   log, notice, warning, error, fatal, and panic
      # Defaults to warning.
      #min_messages: notice
    
    # Warning: The database defined as "test" will be erased and
    # re-generated from your development database when you run "rake".
    # Do not set this db to the same as development or production.
    test:
      <<: *default
      database: sample_sample_test
    
    # As with config/credentials.yml, you never want to store sensitive information,
    # like your database password, in your source code. If your source code is
    # ever seen by anyone, they now have access to your database.
    #
    # Instead, provide the password as a unix environment variable when you boot
    # the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
    # for a full rundown on how to provide these environment variables in a
    # production deployment.
    #
    # On Heroku and other platform providers, you may have a full connection URL
    # available as an environment variable. For example:
    #
    #   DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
    #
    # You can use this database configuration with:
    #
    #   production:
    #     url: <%= ENV['DATABASE_URL'] %>
    #
    production:
      <<: *default
      database: sample_sample_production
      username: sample_sample
      password: <%= ENV['SAMPLE_SAMPLE_DATABASE_PASSWORD'] %>
      url: <%= ENV['DATABASE_URL'] %>
    
[/code]


CC BY-SA 4.0
2021-11-01T09:07:04.403
83373
2021-11-01T13:14:34.117
22565
question
ruby-on-rails ruby docker postgresql docker-compose
docker-composeで構築したrails 環境で rails db すると root パスワードを求められる。


`user: postgres`  
↓  
`username: postgres`

じゃないですか？

したの production と同じ書き方してみればいいんだと思います

* * *
[code]

    environment:
          - 'POSTGRES_USER=postgres'
          - 'POSTGRES_PASSWORD=postgres'
    
[/code]

にはいってるので

`password: <%= ENV.fetch("DATABASE_PASSWORD")%>`  
↓  
`password: <%= ENV.fetch("POSTGRES_PASSWORD")%>`

にすれば環境変数から拾えると思います


CC BY-SA 4.0
2021-11-01T12:33:35.590
83376
2021-11-01T13:14:34.117
2021-11-01T13:14:34.117
83373
answer