前提・実現したいこと
プログラミング初学者ですので、初歩的な質問をしてしまうかもしれませんがご容赦ください。
dockerを用いたローカル上でのポートフォリオ制作が一段落したので、AWSのECSとRDSを使用してデプロイを行おうとしているのですがMysqlのエラーが表示されてしまいデプロイすることができません。
エラーについて調べたり、ECSのログを確認したりしていましたがなかなか解決に至らないため質問させていただいております。
知りたいこと
- Errorの解決方法または、参考となるようなものがないか
発生している問題・エラーメッセージ
ECSをたてた後のEC2,タスクの各コンテナは全てRUNNINGとなっているため、正しく構築できているとは考えています。
全てRUNNIGになっていることを確認し、EC2のエンドポイントにアクセスした際にMysqlのエラーが表示されます。
Mysqlのエラーは下記に示します。
このように、
Mysql2::Error::ConnectionError
Unknown MySQL server host 'db' (-2)
と表示されてしまいます。
該当のソースコード
今回のエラーがどのソースコードに該当するのか検討がつかず載せるべきソースコードがわからないので、追加で何か情報が必要な場合は補足させていただきます。
一応、調べた時にエラーが起きる原因になっていそうな部分を拾って下記に示します。
config/database.yml
default: &default adapter: mysql2 encoding: utf8 username: yourtuber_user password: password pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> development: <<: *default host: db database: yourtuber test: <<: *default host: db database: myapp_test production: <<: *default host: <%= ENV['RDS_HOST'] %> database: <%= ENV['RDS_DB_NAME'] %> username: <%= ENV['RDS_USER_NAME'] %> password: <%= ENV['RDS_PASSWORD'] %>
docker-compose.yml
version: '3' services: yourtuber: # localでの使用 build: . # aws ecrでの使用 # image: 244231949897.dkr.ecr.ap-northeast-1.amazonaws.com/yourtuber_ecr command: bash -c "rm -f tmp/pids/server.pid && bundle exec puma -C config/puma.rb" volumes: - application-data:/myapp - public-data:/myapp/public - tmp-data:/myapp/tmp - log-data:/myapp/log depends_on: - db - selenium_chrome environment: SELENIUM_DRIVER_URL: http://selenium_chrome:4444/wd/hub selenium_chrome: image: selenium/standalone-chrome-debug db: image: mysql:5.7 volumes: - mysql-data:/var/lib/mysql ports: - "3406:3406" environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: yourtuber MYSQL_USER: yourtuber_user MYSQL_PASSWORD: password web: # localでの使用 # build: ./nginx # aws ecrでの使用 image: 244231949897.dkr.ecr.ap-northeast-1.amazonaws.com/nginx_ecr:latest volumes: - public-data:/myapp/public - tmp-data:/myapp/tmp ports: - "8080:8080" depends_on: - yourtuber volumes: application-data: public-data: tmp-data: log-data: mysql-data:
Gemfile
source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.5.8' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 5.2.4', '>= 5.2.4.3' # Use Puma as the app server gem 'puma', '~> 3.11' # Use SCSS for stylesheets gem 'sass-rails', '~> 5.0' # Use Uglifier as compressor for JavaScript assets gem 'uglifier', '>= 1.3.0' # See https://github.com/rails/execjs#readme for more supported runtimes # gem 'mini_racer', platforms: :ruby # Use CoffeeScript for .coffee assets and views gem 'coffee-rails', '~> 4.2' # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks gem 'turbolinks', '~> 5' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 2.5' # Use Redis adapter to run Action Cable in production # gem 'redis', '~> 4.0' # Use ActiveModel has_secure_password # gem 'bcrypt', '~> 3.1.7' # Use ActiveStorage variant # gem 'mini_magick', '~> 4.8' # Use Capistrano for deployment # gem 'capistrano-rails', group: :development # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', '>= 1.1.0', require: false gem 'google-api-client', '~> 0.34' gem 'optimist' gem 'dotenv-rails' gem 'font-awesome-sass', '~> 5.13.0' gem 'jquery-rails' gem 'rails_same_site_cookie' gem 'mysql2' group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] gem 'rspec-rails' gem 'factory_bot_rails' gem 'pry-byebug' end group :development do # Access an interactive console on exception pages or by calling 'console' anywhere in the code. gem 'web-console', '>= 3.3.0' gem 'listen', '>= 3.0.5', '< 3.2' # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' gem 'spring-watcher-listen', '~> 2.0.0' gem 'rubocop', require: false gem 'rubocop-airbnb' gem 'rubocop-rspec', require: false gem 'spring-commands-rspec' gem 'spring-commands-rubocop' end group :test do # Adds support for Capybara system testing and selenium driver gem 'capybara' gem 'webdrivers' gem 'vcr', require: false gem 'webmock' end # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
dbコンテナのCloudWatch Log
yourtuberコンテナのCloudWatch Log
Puma starting in single mode... * Version 3.12.6 (ruby 2.5.8-p224), codename: Llamas in Pajamas * Min threads: 5, max threads: 5 * Environment: development * Listening on unix:///myapp/tmp/sockets/puma.sock Use Ctrl-C to stop
試したこと
- エラー内容確認
Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (0)の解決方法について
Mysql2::Error::ConnectionError: Unknown MySQL server host 'mysql' (-2) Dockerで環境構築
docker-composeコマンド実行時の不可解なエラー
- AWSのログ確認
補足情報(FW/ツールのバージョンなど)
Ruby 2.5.8 Ruby on Rails 5.2.4.3 docker 3.0.3 docker-compose 1.27.4 mysql 5.7 RDS(mysql:version 5.7.24)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。