🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 5

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

MySQL

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

284閲覧

AWSでmysqlを使用してデータベースを構築したい。

kit1987

総合スコア16

Ruby on Rails 5

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

MySQL

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2019/12/20 19:50

前提・実現したいこと

現在ポートフォリオ作成中の初学者です。
progateでrailsコースを一通り終わらせ,現場で使える Ruby on Rails 5速習実践ガイドの書籍を参考にポートフォリオを作成しています。
そこで作成した成果物をAWSで本番環境にデプロイをしたいと思い現在。ローカル環境で作成したモノをgithubで管理し、そのリポジトリをamazon linux上にgitcloneして環境を構築しています。
その際にデータベースはmysqlを使用して環境を構築しているのですがmysql起動まではできたのですがrake db:create RAILS_ENV=productionを実行すると以下のエラーメッセージが出てしまいつなげることができません。
最終的にはaws環境でmysqlを使用して本番環境にデプロイしたいと考えています。

発生している問題・エラーメッセージ

Couldn't create 'app_production' database. Please check your configuration. rake aborted! Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (2)

該当のソースコード

databaseyaml

1# MySQL. Versions 5.1.10 and up are supported. 2# 3# Install the MySQL driver 4# gem install mysql2 5# 6# Ensure the MySQL gem is defined in your Gemfile 7# gem 'mysql2' 8# 9# And be sure to use new-style password hashing: 10# https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html 11# 12default: &default 13 adapter: mysql2 14 encoding: utf8 15 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 16 username: root 17 password: password 18 host: db 19 20development: 21 <<: *default 22 database: app_development 23 24# Warning: The database defined as "test" will be erased and 25# re-generated from your development database when you run "rake". 26# Do not set this db to the same as development or production. 27test: 28 <<: *default 29 database: app_test 30 31# As with config/secrets.yml, you never want to store sensitive information, 32# like your database password, in your source code. If your source code is 33# ever seen by anyone, they now have access to your database. 34# 35# Instead, provide the password as a unix environment variable when you boot 36# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database 37# for a full rundown on how to provide these environment variables in a 38# production deployment. 39# 40# On Heroku and other platform providers, you may have a full connection URL 41# available as an environment variable. For example: 42# 43# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase" 44# 45# You can use this database configuration with: 46# 47# production: 48# url: <%= ENV['DATABASE_URL'] %> 49# 50production: 51 <<: *default 52 database: app_production 53 username: app 54 password: <%= ENV['APP_DATABASE_PASSWORD'] %> 55

dockercomposeyml

1version: '3' 2services: 3 web: 4 build: . 5 command: bundle exec rails s -p 3000 -b '0.0.0.0' 6 volumes: 7 - .:/app 8 ports: 9 - 3000:3000 10 11 depends_on: 12 - db 13 - chrome 14 chrome: 15 image: selenium/standalone-chrome:3.141.59-dubnium 16 ports: 17 - 4444:4444 18 tty: true 19 stdin_open: true 20 db: 21 image: mysql:5.7 22 volumes: 23 - db-volume:/var/lib/mysql 24 environment: 25 MYSQL_ROOT_PASSWORD: password 26volumes: 27 db-volume: 28 29

試したこと

以下のURLのqiitaの記事を参考にしていす。
(デプロイ編②)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで

補足情報(FW/ツールのバージョンなど

端末:MacBook Air (11-inch, Mid 2012)
os:catalina 10.15
ruby:2.4.5
mysql:5.7

ローカル環境ではdockerを使用して作業を進めていました。
amzon linux上では通常のローカル環境と同じ手順を踏んで進めていましたがやはりこちらでもdockerをインストールして同じ環境で構築しなければいけないのでしょうか?
初歩的な部分ですがもしわかる方いればご教授いただけると助かります。

よろしくお願い致します。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

database.ymlの
host: db
がおかしいです。
MySQLはRailsを動かしているのと同じマシンですか?でしたらhost: localhost としてください。
その他に socket: の定義も必要です。
"/tmp/mysqld.sock",
"/tmp/mysql.sock",
"/var/run/mysqld/mysqld.sock",
"/var/lib/mysql/mysql.sock"
辺りにありますので
socket: /tmp/mysql.sock
と書いてくだあい

投稿2019/12/20 21:44

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kit1987

2019/12/20 22:08

ご返答ありがとうございます。 重ねて質問して恐縮なのですがsoket:の定義のやり方をもう少し詳しくお聞きしてもよろしいでしょうか?vimで開いて変更すればよろしいでしょうか? ググったのですが私の理解じゃ分からずよろしくお願い致します。
kit1987

2019/12/21 01:16

ご返答ありがとうございます。 現在手元にPCがないので、参考記事を元に夜に実行してみたいと思います。
winterboum

2019/12/21 01:57

> host: 127.0.0.1として、socket:なし そういう定義もあるんですか。知らなかった
kit1987

2019/12/21 12:56

こんばんは。 上記のやり方を実施しまして、解決する事ができました。 色々とありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問