前提・実現したいこと
初学者で初デプロイとしてこちらの記事を元に
- docker
- Rails
- MySql
- nginx
の開発環境をEC2,RDS(mySQL)でデプロイを行ってみたのですが、
docker-compose run web rails db:createで以下のエラーとなります
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
rails aborted! NoMethodError: Cannot load database configuration: undefined method `[]' for nil:NilClass (erb):52:in `<main>' /usr/local/bundle/gems/railties-5.2.4.2/lib/rails/application/configuration.rb:172:in `database_configuration' /usr/local/bundle/gems/activerecord-5.2.4.2/lib/active_record/railtie.rb:133:in `block (2 levels) in <class:Railtie>' /usr/local/bundle/gems/activesupport-5.2.4.2/lib/active_support/lazy_load_hooks.rb:71:in `instance_eval' /usr/local/bundle/gems/activesupport-5.2.4.2/lib/active_support/lazy_load_hooks.rb:71:in `block in execute_hook' /usr/local/bundle/gems/activesupport-5.2.4.2/lib/active_support/lazy_load_hooks.rb:62:in `with_execution_control' /usr/local/bundle/gems/activesupport-5.2.4.2/lib/active_support/lazy_load_hooks.rb:67:in `execute_hook' /usr/local/bundle/gems/activesupport-5.2.4.2/lib/active_support/lazy_load_hooks.rb:52:in `block in run_load_hooks' /usr/local/bundle/gems/activesupport-5.2.4.2/lib/active_support/lazy_load_hooks.rb:51:in `each' /usr/local/bundle/gems/activesupport-5.2.4.2/lib/active_support/lazy_load_hooks.rb:51:in `run_load_hooks' /usr/local/bundle/gems/activerecord-5.2.4.2/lib/active_record/base.rb:328:in `<module:ActiveRecord>' /usr/local/bundle/gems/activerecord-5.2.4.2/lib/active_record/base.rb:27:in `<top (required)>' /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require' /usr/local/bundle/gems/bootsnap-1.4.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in .....
データベースのコマンドなのでRDSの設定なのかdatabase.ymlなのか・・・
知識不足すぎて調べても検討がつきません。
お助けいただけますと幸いです
該当のソースコード
docker-compose.yml
version: '3' services: app: build: . command: bundle exec puma -C config/puma.rb volumes: - .:/app ports: - 3000:3000 depends_on: - db tty: true stdin_open: true db: image: mysql:5.7 volumes: - db-volume:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: web: build: context: containers/nginx ports: - 80:80 depends_on: - app volumes: db-volume:
Dockerfile
FROM ruby:2.5.1 RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - && apt-get update -qq && apt-get install -y build-essential nodejs && apt-get install -y vim RUN mkdir /app WORKDIR /app COPY Gemfile /app/Gemfile COPY Gemfile.lock /app/Gemfile.lock RUN bundle install COPY . /app RUN mkdir -p tmp/sockets
config/database.yml
default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: host: db development: <<: *default database: app_development test: <<: *default database: app_test production: <<: *default host: <%= Rails.application.credentials.rds[:host] %> database: <%= Rails.application.credentials.rds[:database] %> username: <%= Rails.application.credentials.rds[:username] %> password: <%= Rails.application.credentials.rds[:password] %>
docker-compose run -e EDITOR="vim" web rails credentials:editで以下のRDSの情報も入力しました
rds: host: RDSのエンドポイント database: RDSの「データベースの名前」 username: RDSの「マスターユーザの名前」 password: RDSの「マスターパスワード」
試したこと
- sshで入ってdocker,docker-composeがインストールされている所までは確認しました。
あなたの回答
tips
プレビュー