Puma caught this error: Cannot load database configuration: key not found: "DATABASE_PASSWORD" (KeyError)について

初めに!

  • 学習中に躓いたところをアウトプットしていきます。

概要

  • dockerを使用してRailsアプリケーションとDBをセットして立ち上げることを目的としています。

問題点

  • docker-compose upをしてブラウザでポート3000にアクセスするとエラーが生じた。

エラー内容

ブラウザに表示されたエラー

ターミナルに現れたエラー
web-1  | 2024-04-26 09:07:20 +0000 Rack app ("GET /" - (192.168.65.1)): #<KeyError:"Cannot load database configuration:\nkey not found: \"DATABASE_PASSWORD\"">

関連ファイル

docker-compose.yml
version: '12'
volumes:
  db-data:
  
services:
  db:
    image: postgres
    volumes:
      - 'db-data:/var/lib/postgresql/data'

  web:
    build: .
    command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/workdir
    environment:
      - 'POSTGRES_PASSWORD=password'
    ports:
      - "3000:3000"
    depends_on:
      - db
    links:
      - db
    tty: true
    stdin_open: true
database.yml
default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres
  port: 5432
  password: <%= ENV.fetch("DATABASE_PASSWORD") %> 
  # For details on connection pooling, see Rails configuration guide
  # https://guides.rubyonrails.org/configuring.html#database-pooling
  pool: 5

エラーの原因の予想

  • docker-compose.ymlのDATABASE_PASSWORDに関連する場所に原因がある。

  • database.ymlのpasswordがうまく機能していない。

原因

  • docker-compose.ymlのenviromentのPOSTGRES_PASSWORD=passwordをDATABASE _PASSWORDに変更
version: '12'
volumes:
  db-data:
  
services:
  db:
    image: postgres
    volumes:
      - 'db-data:/var/lib/postgresql/data'

  web:
    build: .
    command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/workdir
    environment:
      - 'DATABASE_PASSWORD=password'
    ports:
      - "3000:3000"
    depends_on:
      - db
    links:
      - db
    tty: true
    stdin_open: true

結語

  • 今回起こったエラーはdocker-compose.ymlのenvironmentの環境変数がきちんと設定されていなかったことで生じた。