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

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

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

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

Ruby on Rails 5

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

2077閲覧

docker-composeを使ってrailsとmysqlの接続ができない。

YoshikiMiyazaki

総合スコア18

docker-compose

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

Ruby on Rails 5

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

1グッド

0クリップ

投稿2019/06/07 06:25

docker-composeを使って、Ruby on Railsのアプリケーションを作ろうとしています。

各種version

  • Ruby 2.6.3
  • rails 5.2.3
  • Mysql 8.0.12
$ docker ps

をやると、mysqlのコンテナと、railsのコンテナが起動しているのが確認できます。
ここからローカルで

$ docker-compose run --rm rails rails db:create

を実行すると、以下のようなエラーが出ます。

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory") Couldn't create 'app_development' database. Please check your configuration. rails aborted! Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory") /usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `connect' /usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `initialize' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/mysql2_adapter.rb:22:in `new' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/mysql2_adapter.rb:22:in `mysql2_connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:811:in `new_connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:855:in `checkout_new_connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:834:in `try_to_checkout_new_connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:795:in `acquire_connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:523:in `checkout' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:382:in `connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1014:in `retrieve_connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:118:in `retrieve_connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:90:in `connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/mysql_database_tasks.rb:6:in `connection' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/mysql_database_tasks.rb:14:in `create' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:119:in `create' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:139:in `block in create_current' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:316:in `block in each_current_configuration' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:313:in `each' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:313:in `each_current_configuration' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:138:in `create_current' /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/railties/databases.rake:29:in `block (2 levels) in <main>' /usr/local/bundle/gems/railties-5.2.3/lib/rails/commands/rake/rake_command.rb:23:in `block in perform' /usr/local/bundle/gems/railties-5.2.3/lib/rails/commands/rake/rake_command.rb:20:in `perform' /usr/local/bundle/gems/railties-5.2.3/lib/rails/command.rb:48:in `invoke' /usr/local/bundle/gems/railties-5.2.3/lib/rails/commands.rb:18:in `<main>' /usr/local/bundle/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require' /usr/local/bundle/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi' /usr/local/bundle/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register' /usr/local/bundle/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi' /usr/local/bundle/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require' /usr/local/bundle/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `block in require' /usr/local/bundle/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency' /usr/local/bundle/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require' /app/bin/rails:9:in `<top (required)>' /usr/local/bundle/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `load' /usr/local/bundle/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `call' /usr/local/bundle/gems/spring-2.0.2/lib/spring/client/command.rb:7:in `call' /usr/local/bundle/gems/spring-2.0.2/lib/spring/client.rb:30:in `run' /usr/local/bundle/gems/spring-2.0.2/bin/spring:49:in `<top (required)>' /usr/local/bundle/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `load' /usr/local/bundle/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `<top (required)>' /app/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' Tasks: TOP => db:create (See full trace by running task with --trace)

mysqlコンテナの起動はまちがいなくできているので、mysqlとrailsの接続ができていないと考えているのですが、
どうすればエラーが治るかがわかりません。

教えていただけると幸いです。
よろしくお願いいたします。

Dockerfile

1FROM node:11.10.0 as node 2FROM ruby:2.6.3 3 4ENV LANG C.UTF-8 5 6RUN apt-get update -qq && \ 7 apt-get install -y --no-install-recommends \ 8 build-essential \ 9 libpq-dev \ 10 libfontconfig1 && \ 11 rm -rf /var/lib/apt/lists/* 12 13ENV ENTRYKIT_VERSION 0.4.0 14 15RUN wget https://github.com/progrium/entrykit/releases/download/v${ENTRYKIT_VERSION}/entrykit_${ENTRYKIT_VERSION}_Linux_x86_64.tgz \ 16 && tar -xvzf entrykit_${ENTRYKIT_VERSION}_Linux_x86_64.tgz \ 17 && rm entrykit_${ENTRYKIT_VERSION}_Linux_x86_64.tgz \ 18 && mv entrykit /bin/entrykit \ 19 && chmod +x /bin/entrykit \ 20 && entrykit --symlink 21 22ENV YARN_VERSION 1.13.0 23 24COPY --from=node /opt/yarn-v$YARN_VERSION /opt/yarn 25COPY --from=node /usr/local/bin/node /usr/local/bin/ 26 27 28RUN ln -s /opt/yarn/bin/yarn /usr/local/bin/yarn \ 29 && ln -s /opt/yarn/bin/yarnpkg /usr/local/bin/yarnpkg 30 31RUN mkdir /app 32 33WORKDIR /app 34 35RUN bundle config build.nokogiri --use-system-libraries 36ENTRYPOINT [ \ 37 "prehook", "ruby -v", "--", \ 38 "prehook", "bundle install -j3 --quiet", "--"] 39

docker

1version: '2' 2services: 3 rails: &app_base 4 build: 5 context: . 6 dockerfile: "Dockerfile.dev" 7 command: ["bundle", "exec", "rails", "s", "-p", "3000", "-b", "0.0.0.0"] 8 env_file: 9 - "./.env.dev" 10 environment: 11 - "WEBPACKER_DEV_SERVER_HOST=webpack" 12 volumes: 13 - ".:/app" 14 volumes_from: 15 - data 16 ports: 17 - "3000:3000" 18 links: 19 - db 20 tty: true 21 stdin_open: true 22 webpack: 23 <<: *app_base 24 command: "bin/webpack-dev-server" 25 environment: 26 - "WEBPACKER_DEV_SERVER_HOST=0.0.0.0" 27 ports: 28 - "3035:3035" 29 depends_on: 30 - rails 31 tty: false 32 stdin_open: false 33 db: 34 image: "mysql" 35 command: "--default-authentication-plugin=mysql_native_password" 36 environment: 37 - "MYSQL_USER=yoshiki" 38 - "MYSQL_PASSWORD=rootroot" 39 - "MYSQL_ROOT_PASSWORD=rootroot" 40 volumes_from: 41 - data 42 ports: 43 - "3306:3306" 44 45 data: 46 image: "busybox" 47 volumes: 48 - "db:/var/run/mysqld/data" 49 - "bundle:/usr/local/bundle" 50 51volumes: 52 db: 53 driver: local 54 bundle: 55 driver: local

config/database.yml

1default: &default 2 adapter: mysql2 3 encoding: utf8 4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 5 username: <%= ENV.fetch('DATABASE_USER') { 'yoshiki' } %> 6 password: <%= ENV.fetch('DATABASE_PASSWORD') { 'rootroot' } %> 7 host: <%= ENV.fetch('DATABASE_HOST') { 'db' } %> 8 port: <%= ENV.fetch('DATABASE_PORT') { 3306 } %>
ts21👍を押しています

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

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

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

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

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

guest

回答1

0

自己解決

DATABASE_HOSTの環境変数をlocalhostからdbに直したら行けました!

投稿2019/06/07 06:56

YoshikiMiyazaki

総合スコア18

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問