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

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

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

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

Amazon EC2

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

AWS(Amazon Web Services)

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

Q&A

解決済

1回答

728閲覧

EC2インスタンス内でデータベースを作成したい

k-hayashi

総合スコア13

MySQL

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

Amazon EC2

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

AWS(Amazon Web Services)

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

0グッド

1クリップ

投稿2021/10/12 12:33

前提・実現したいこと

タイトルのとおりです。
AWSでデプロイをしたくこちらの記事を参考にデプロイを試みているのですが、EC2インスタンス内でrails db:create RAILS_ENV=productionをしますが、下記のとおりエラーが出ます

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

Unknown MySQL server host 'mysql' (2) Couldn't create 'gomisutenavi_production' database. Please check your configuration. rails aborted! Mysql2::Error::ConnectionError: Unknown MySQL server host 'mysql' (2) bin/rails:4:in `<main>' Tasks: TOP => db:create (See full trace by running task with --trace)

該当のソースコード

database.yml default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: <%= ENV.fetch("DATABASE_PASSWORD") %> host: mysql port: 3306 development: <<: *default database: gomisutenavi_development test: <<: *default database: gomisutenavi_test production: <<: *default database: gomisutenavi_production username: root password: <%= ENV['DATABASE_PASSWORD'] %> socket: /var/lib/mysql/mysql.sock
docker-compose.yml version: '3' volumes: data: services: gomisutenavi: build: . ports: - '3000:3000' volumes: - '.:/gomisutenavi' tty: true stdin_open: true command: bundle exec rails server -b 0.0.0.0 environment: - 'DATABASE_PASSWORD=password' depends_on: - mysql links: - mysql mysql: platform: linux/x86_64 image: mysql:5.7 ports: - '3306:3306' volumes: - 'data:/var/lib/mysql' environment: MYSQL_ROOT_PASSWORD: password
Dockerfile FROM ruby:2.5.8 RUN apt-get update && apt-get install -y \ build-essential \ libpq-dev \ nodejs \ default-mysql-client \ yarn WORKDIR /gomisutenavi COPY Gemfile Gemfile.lock /gomisutenavi/ RUN bundle install

試したこと

解決するために参考にした記事
開発環境(Docker-compose)では問題ないが、本番環境でMysql2::Error::ConnectionError: Unknown MySQL server host 'db' (2)がでてデプロイ(Capistrano)できない
Unknown MySQL server host 'db' (25)-teratail

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

ruby 2.5.8
rails 5.2.6
mysql 5.7

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

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

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

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

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

yu_1985

2021/10/12 14:15

rails db:create RAILS_ENV=productionはどこで実行したんでしょうか。 またdocker-compose upはしましたか
k-hayashi

2021/10/13 00:10 編集

Q.rails db:create RAILS_ENV=productionはどこで実行したんでしょうか。 A.記事に書いてあるとおり、EC2ターミナルのアプリケーションのディレクトリ内で実行しました。 Q.docker-compose upはしましたか A.EC2ターミナル内でdockr-compose up -dできませんでしたので、ローカルでdocker-compose up -dをしましたが、同じエラーが出ました。 追記 ローカルでrails db:createしたところ、同じエラーが出ました。ということはEC2で作成する前にそもそもローカルでデータベースの作成ができていないと考えたのですが、docker-compose exec アプリ名 bash でコンテナの中に入ってrails db:createはすることはできました。
guest

回答1

0

ベストアンサー

docker-composeの動作にそこまで詳しいわけではないので誤りがあったら申し訳ないのですが、mysqlという名前で名前解決が可能なのはコンテナ間であって、コンテナの外からはその名前でMySQLが起動しているコンテナを見つけられないのではないでしょうか。
つまり、明示的にコンテナ内からコマンド実行してやれば恐らくうまくいくでしょう。

EC2ターミナル内でdockr-compose up -dできませんでした

コンテナを使用する作りにしているにも関わらずコンテナを起動していないのであればそれは接続できないと思うのでそれはそれで確認が必要です。

また、ローカルでコマンド実行すると、使用するのはDockerのRailsではなくローカルのRailsになってしまうので想定外の動作をしてしまう可能性があります。
docker-compose run gomisutenavi bundle exec railsgomisutenavi内のRailsを使えるはずなので、ローカルではなくそちらを使うべきでしょう。

投稿2021/10/13 02:15

yu_1985

総合スコア7471

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

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

k-hayashi

2021/10/14 11:32

docker-compose -dができないのは、単純にEC2内でdocker-compose及びdockerをインストールしていませんでした。インストールしたところコンテナが無事起動しました。 rails db:createも、最初にdocker-compose run gomisutenavi を記述することによって無事createできました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問