初めに!
- 学習中に躓いたところをアウトプットしていきます。
概要
- 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の環境変数がきちんと設定されていなかったことで生じた。