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

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

新規登録して質問してみよう
ただいま回答率
85.35%
docker-compose

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

MySQL

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

Ruby on Rails

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

Q&A

1回答

1003閲覧

Dockerでdb:createを実行した際のエラー

nil1000

総合スコア13

docker-compose

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

MySQL

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

Ruby on Rails

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

0グッド

1クリップ

投稿2021/05/04 05:59

編集2021/05/04 06:29

DockerでDBを作成し、
ローカルでアプリケーション開発に進みたいのですが、
以下のエラーでDBが作成されません。
解決方法を、どなたかご教授頂けませんか?

$ docker-compose run web rake db:create Starting rails-community_db_1 ... done Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) Couldn't create 'myapp_development' database. Please check your configuration. rake aborted! Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `connect' /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `initialize' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/connection_adapters/mysql2_adapter.rb:22:in `new' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/connection_adapters/mysql2_adapter.rb:22:in `mysql2_connection' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:830:in `new_connection' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:874:in `checkout_new_connection' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:853:in `try_to_checkout_new_connection' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:814:in `acquire_connection' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:538:in `checkout' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:382:in `connection' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:1033:in `retrieve_connection' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/connection_handling.rb:118:in `retrieve_connection' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/connection_handling.rb:90:in `connection' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/tasks/mysql_database_tasks.rb:6:in `connection' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/tasks/mysql_database_tasks.rb:14:in `create' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/tasks/database_tasks.rb:119:in `create' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/tasks/database_tasks.rb:139:in `block in create_current' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/tasks/database_tasks.rb:316:in `block in each_current_configuration' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/tasks/database_tasks.rb:313:in `each' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/tasks/database_tasks.rb:313:in `each_current_configuration' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/tasks/database_tasks.rb:138:in `create_current' /usr/local/bundle/gems/activerecord-5.2.5/lib/active_record/railties/databases.rake:29:in `block (2 levels) in <main>' /usr/local/bundle/gems/rake-13.0.3/exe/rake:27:in `<top (required)>' Tasks: TOP => db:create (See full trace by running task with --trace)

回答ありがとうございます。
psを実行したところ、

docker-compose ps Name Command State Ports ----------------------------------------------------------------------- rails-community_db_1 docker-entrypoint.sh mysqld Exit 1 rails-community_web_1 entrypoint.sh bash -c rm - ... Exit 1

との表記が出ます。

docker-compose.ymlファイルの内容を追記します。

docker

1version: '3' 2services: 3 db: 4 image: mysql:5.7 5 environment: 6 MYSQL_USER: root 7 MYSQL_ROOT_PASSWORD: password 8 volumes: 9 - ./tmp/db:/var/lib/mysql/data 10 web: 11 build: . 12 command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 13 volumes: 14 - .:/myapp 15 ports: 16 - "3000:3000" 17 depends_on: 18 - db

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

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

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

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

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

hide5stm

2021/05/04 06:09

mysqlが動いていないためmysqld.sockファイルがなくエラーになっているようです。 dockerコンテナ内にmysqlがインストールできているか、起動できているかの確認をするとよいと思います
hide5stm

2021/05/04 06:25

docoker-compose.yml の設定はどうなっているでしょうか。 railsアプリのコンテナとmysqlのコンテナが別々に立ち上がる設定をされていそうですが、 コンテナ間の接続設定とrakeコマンドがその接続を活用できているかが気になります
guest

回答1

0

config/database.yml という railsの設定ファイルがあると思うのですが、
MySQLサーバの動いてるhostがlocalhostになっているのではないかと思います。
以下のように docker-compose.ymlで起動している db インスタンスをMySQLサーバとして
使うように設定すればいいと思います。

yml

1host: db

投稿2021/05/04 07:10

hide5stm

総合スコア426

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

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

nil1000

2021/05/05 07:36

database.ymlの間違いでした。 初歩的なエラーですみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問