質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

解決済

Unknown MySQL server host 'db' の解決

noah3223haon
noah3223haon

総合スコア12

unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

1回答

0評価

0クリップ

293閲覧

投稿2022/04/21 03:31

前提・実現したいこと

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

I, [2022-04-21T00:17:16.470564 #5809] INFO -- : Refreshing Gem list I, [2022-04-21T00:17:17.358938 #5809] INFO -- : unlinking existing socket=/var/www/rails_portfolio/tmp/sockets/unicorn.sock I, [2022-04-21T00:17:17.359138 #5809] INFO -- : listening on addr=/var/www/rails_portfolio/tmp/sockets/unicorn.sock fd=9 E, [2022-04-21T00:17:17.374145 #5809] ERROR -- : Unknown MySQL server host 'db' (-2) (ActiveRecord::ConnectionNotEstablished) /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

default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: host: localhost development: <<: *default database: myapp_development host: db username: root password: password test: <<: *default database: myapp_test host: db username: root password: password production: <<: *default database: myapp_production username: root password: <%= ENV['DATABASE_PASSWORD'] %> socket: /var/lib/mysql/mysql.sock

docker-compose.yml

docker

version: '3' services: db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: MYSQL_DATABASE: root MYSQL_ALLOW_EMPTY_PASSWORD: "yes" ports: - "3306:3306" volumes: - ./tmp/db:/var/lib/mysql web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" volumes: - .:/myapp ports: - "3000:3000" depends_on: - db

自分で調べたことや試したこと

調べたこと

  • Dockerの環境でページが表示されるのは確認済み
  • Docker内のMySQLにてmyapp_development, myapp_testを確認

mysql

mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | myapp_development | | myapp_test | | mysql | | performance_schema | | root | | sys | +--------------------+ 7 rows in set (0.01 sec)
  • EC2内のMySQLにてmyapp_productionを確認

mysql

mysql>show databases; +--------------------+ | Database | +--------------------+ | information_schema | | myapp_production | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec)

試したこと

  • database.ymlのproductionにhost: dbを追加

database.yml

production: <<: *default database: myapp_production host: db #ここを追加 username: root password: <%= ENV['DATABASE_PASSWORD'] %> 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

$ sudo systemctl status mariadb Unit mariadb.service could not be found.

MySQL

sudo systemctl status mysqld ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2022-04-20 23:09:18 UTC; 3h 30min ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 2911 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Main PID: 2935 (mysqld) Status: "Server is operational" CGroup: /system.slice/mysqld.service └─2935 /usr/sbin/mysqld Apr 20 23:09:15 ip-172-31-2-166.ap-northeast-1.compute.internal systemd[1]: Starting MySQL Server... Apr 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/

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。