前提・実現したいこと
EC2にデプロイをしたのですが、ページが表示されず
The page you were looking for doesn't exist. と表示されていました。
unicorn.stderr.logを見たところ、
Unknown MySQL server host 'db' (-2) (ActiveRecord::ConnectionNotEstablished)
とあったのでこのエラーを解決することでデプロイしたものが表示されると考えています。
エラー文から察するにdatabase.ymlの記述に問題があると考えていますが解決方法がわかりません。
懸念点として、下記のサイトを参考に作業を進めているのですがDBをMariaDBではなくMySQLを使用しているため、もしそれが原因の場合はMariaDBを使用してくださいと回答をいただけると嬉しいです。
https://pikawaka.com/rails/ec2_deploy
発生している問題・エラーメッセージ
unicorn.stderr.log
1I, [2022-04-21T00:17:16.470564 #5809] INFO -- : Refreshing Gem list 2I, [2022-04-21T00:17:17.358938 #5809] INFO -- : unlinking existing socket=/var/www/rails_portfolio/tmp/sockets/unicorn.sock 3I, [2022-04-21T00:17:17.359138 #5809] INFO -- : listening on addr=/var/www/rails_portfolio/tmp/sockets/unicorn.sock fd=9 4E, [2022-04-21T00:17:17.374145 #5809] ERROR -- : Unknown MySQL server host 'db' (-2) (ActiveRecord::ConnectionNotEstablished) 5/home/ec2-user/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/activerecord-6.1.5/lib/active_record/connection_adapters/mysql2_adapter.rb:45:in `rescue in new_client'
該当のソースコード
database.yml
database.yml
1default: &default 2 adapter: mysql2 3 encoding: utf8mb4 4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 5 username: root 6 password: 7 host: localhost 8 9development: 10 <<: *default 11 database: myapp_development 12 host: db 13 username: root 14 password: password 15 16test: 17 <<: *default 18 database: myapp_test 19 host: db 20 username: root 21 password: password 22 23production: 24 <<: *default 25 database: myapp_production 26 username: root 27 password: <%= ENV['DATABASE_PASSWORD'] %> 28 socket: /var/lib/mysql/mysql.sock
docker-compose.yml
docker
1version: '3' 2services: 3 db: 4 image: mysql:8.0 5 environment: 6 MYSQL_ROOT_PASSWORD: 7 MYSQL_DATABASE: root 8 MYSQL_ALLOW_EMPTY_PASSWORD: "yes" 9 ports: 10 - "3306:3306" 11 volumes: 12 - ./tmp/db:/var/lib/mysql 13 14 web: 15 build: . 16 command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 17 volumes: 18 - .:/myapp 19 ports: 20 - "3000:3000" 21 depends_on: 22 - db
自分で調べたことや試したこと
調べたこと
- Dockerの環境でページが表示されるのは確認済み
- Docker内のMySQLにてmyapp_development, myapp_testを確認
mysql
1mysql> show databases; 2+--------------------+ 3| Database | 4+--------------------+ 5| information_schema | 6| myapp_development | 7| myapp_test | 8| mysql | 9| performance_schema | 10| root | 11| sys | 12+--------------------+ 137 rows in set (0.01 sec)
- EC2内のMySQLにてmyapp_productionを確認
mysql
1mysql>show databases; 2+--------------------+ 3| Database | 4+--------------------+ 5| information_schema | 6| myapp_production | 7| mysql | 8| performance_schema | 9| sys | 10+--------------------+ 115 rows in set (0.00 sec)
試したこと
- database.ymlのproductionにhost: dbを追加
database.yml
1略 2production: 3 <<: *default 4 database: myapp_production 5 host: db #ここを追加 6 username: root 7 password: <%= ENV['DATABASE_PASSWORD'] %> 8 socket: /var/lib/mysql/mysql.sock
develop,testに記述してあったため記述不足かと思い追加したが、
master failed to start, check stderr log for detailsと表示され、デプロイ自体ができなくなったため削除。
使っているツールのバージョンなど補足情報
バージョン
macOS Monterey 12.3.1
mysql Ver 8.0.28
unicorn-5.4.1
補足
- Gemfile
source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.7.5' gem 'rails', '~> 6.1.5' gem 'mysql2', '~>0.5.3' gem 'puma', '~> 5.0' gem 'sass-rails', '>= 6' gem 'webpacker', '~> 5.0' gem 'turbolinks', '~> 5' gem 'jbuilder', '~> 2.7' gem 'bootsnap', '>= 1.4.4', require: false group :development, :test do gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] end group :development do gem 'web-console', '>= 4.1.0' gem 'rack-mini-profiler', '~> 2.0' gem 'listen', '~> 3.3' gem 'spring' gem 'rspec-rails' end group :production do gem 'unicorn', '5.4.1' end group :test do gem 'capybara', '>= 3.26' gem 'selenium-webdriver', '>= 4.0.0.rc1' gem 'webdrivers' gem 'rspec-rails' end gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
- MariaDBとMySQLの状況
MariaDB
1$ sudo systemctl status mariadb 2Unit mariadb.service could not be found.
MySQL
1sudo systemctl status mysqld 2● mysqld.service - MySQL Server 3 Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) 4 Active: active (running) since Wed 2022-04-20 23:09:18 UTC; 3h 30min ago 5 Docs: man:mysqld(8) 6 http://dev.mysql.com/doc/refman/en/using-systemd.html 7 Process: 2911 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) 8 Main PID: 2935 (mysqld) 9 Status: "Server is operational" 10 CGroup: /system.slice/mysqld.service 11 └─2935 /usr/sbin/mysqld 12Apr 20 23:09:15 ip-172-31-2-166.ap-northeast-1.compute.internal systemd[1]: Starting MySQL Server... 13Apr 20 23:09:18 ip-172-31-2-166.ap-northeast-1.compute.internal systemd[1]: Started MySQL Server.
- このサイトを参考に作成したものをデプロイしようとしています。
docker-composeでRails 6×MySQLの開発環境を構築する方法
https://tmasuyama1114.com/docker-compose-rails6-mysql-development/
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/22 03:07
2022/04/22 03:25
2022/04/27 04:19