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

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

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

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

MySQL

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

Ruby on Rails

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

Docker

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

Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。

Q&A

解決済

1回答

5144閲覧

Docker内のMySQLコンテナ( server on '127.0.0.1')にアクセスしたい。

jinugasachio

総合スコア12

docker-compose

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

MySQL

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

Ruby on Rails

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

Docker

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

Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。

0グッド

0クリップ

投稿2019/07/17 10:57

前提・実現したいこと

プログラミング学習中の初学者です。現在Dockerを用いて、Railsアプリの環境構築を行なっています。
Dockerを立ち上げた際のwebコンテナからmysqlコンテナへアクセスができない状態を解決したいです。皆様の知見をお貸し頂ければと思います。何卒よろしくお願い致します。

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

Error

1Mysql2::Error::ConnectionError 2Can't connect to MySQL server on '127.0.0.1' (111 "Connection refused")

該当のソースコード

Dockerfile

1FROM ruby:2.5.5-stretch 2ENV LANG C.UTF-8 3 4RUN apt-get update -qq && apt-get install -y \ 5 build-essential \ 6 nodejs \ 7 mysql-client \ 8 && rm -rf /var/lib/apt/lists/* 9 10RUN gem install bundler 11 12WORKDIR /tmp 13ADD Gemfile Gemfile 14ADD Gemfile.lock Gemfile.lock 15RUN bundle install 16 17ENV APP_HOME /myapp 18RUN mkdir -p $APP_HOME 19WORKDIR $APP_HOME 20ADD . $APP_HOME

DockerComposeYml

1 2version: '3' 3 4services: 5 web: 6 build: 7 context: . 8 dockerfile: Dockerfile 9 ports: 10 - "3000:3000" 11 tty: true 12 command: bundle exec rails s -p 3000 -b '0.0.0.0' 13 volumes: 14 - .:/myapp 15 depends_on: 16 - mysql 17 - chrome 18 mysql: 19 image: mysql:8.0.16 20 command: --default-authentication-plugin=mysql_native_password 21 restart: always 22 environment: 23 MYSQL_HOST: 127.0.0.1 24 MYSQL_ROOT_PASSWORD: root 25 MYSQL_DATABASE: myapp_development 26 MYSQL_USERNAME: root 27 28 ports: 29 - 4306:3306 30 volumes: 31 - ./mysql_data:/var/lib/mysql 32 chrome: 33 image: selenium/standalone-chrome:3.141.59-dubnium 34 ports: 35 - 4444:4444 36 37volumes: 38 bundle: 39 mysql_data:

DatabaseYml

1 2default: &default 3 adapter: mysql2 4 encoding: utf8 5 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 6 username: root 7 password: root 8 host: 127.0.0.1 9 port: 3306 10 socket: /var/lib/mysql/mysql.sock 11 12development: 13 <<: *default 14 database: myapp_development 15 16 17test: 18 <<: *default 19 database: myapp_test 20 21 22production: 23 <<: *default 24 database: myapp_production 25 username: myapp 26 password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>

CircleCi

1version: 2 2jobs: 3 rubocop: 4 docker: 5 - image: circleci/ruby:2.5.5-stretch-node-browsers-legacy 6 environment: 7 RAILS_ENV: test 8 MYSQL_HOST: 127.0.0.1 9 BUNDLER_VERSION: 2.0.2 10 - image: circleci/mysql:8.0.16-ram 11 command: --default-authentication-plugin=mysql_native_password 12 environment: 13 MYSQL_HOST: 127.0.0.1 14 MYSQL_USERNAME: root 15 MYSQL_ROOT_PASSWORD: root 16 MYSQL_DATABASE: myapp_test 17 18 working_directory: ~/repo 19 20 steps: 21 - checkout 22 - run: 23 name: setup bundler 24 command: | 25 sudo gem update --system 26 sudo gem uninstall bundler 27 sudo rm /usr/local/bin/bundle 28 # sudo rm /usr/local/bin/bundler 29 sudo gem install bundler 30 - restore_cache: 31 keys: 32 - v1-dependencies-{{ checksum "Gemfile.lock" }} 33 - v1-dependencies- 34 - run: bundle install --jobs=4 --retry=3 --path vendor/bundler 35 - run: yarn install 36 - save_cache: 37 paths: 38 - ./vendor/bundler 39 key: v1-dependencies-{{ checksum "Gemfile.lock" }} 40 # Rubocop 41 - run: 42 name: Rubocop 43 command: bundle exec rubocop 44 45 rspec: 46 docker: 47 - image: circleci/ruby:2.5.5-stretch-node-browsers-legacy 48 environment: 49 RAILS_ENV: test 50 MYSQL_HOST: 127.0.0.1 51 BUNDLER_VERSION: 2.0.2 52 - image: circleci/mysql:8.0.16-ram 53 command: --default-authentication-plugin=mysql_native_password 54 environment: 55 MYSQL_HOST: 127.0.0.1 56 MYSQL_USERNAME: root 57 MYSQL_ROOT_PASSWORD: root 58 MYSQL_DATABASE: myapp_test 59 60 working_directory: ~/repo 61 62 steps: 63 - checkout 64 - run: 65 name: setup bundler 66 command: | 67 sudo gem update --system 68 sudo gem uninstall bundler 69 sudo rm /usr/local/bin/bundle 70 sudo gem install bundler 71 - restore_cache: 72 keys: 73 - v1-dependencies-{{ checksum "Gemfile.lock" }} 74 - v1-dependencies- 75 - run: bundle install --jobs=4 --retry=3 --path vendor/bundler 76 - run: yarn install 77 - save_cache: 78 paths: 79 - ./vendor/bundler 80 key: v1-dependencies-{{ checksum "Gemfile.lock" }} 81 - run: bundle exec rails db:create 82 83 # Rspec 84 - run: 85 name: Rspec 86 command: bundle exec rspec 87 88workflows: 89 version: 2 90 rubocop_rspec: 91 jobs: 92 - rubocop 93 - rspec: 94 requires: 95 - rubocop

試したこと

circleciでのテスト環境(MYSQL_HOST: 127.0.0.1)ではアクセスができ、CIが問題なく通る。

database.ymlの中の記載を、
host: mysql
とするとアクセスができrailsのトップページに行くが、もちろんCIは通らない。

補足情報

Docker : 18.09.2
Rails : 5.2.3
Ruby : 2.5.5p157
MySQL : 8.0.16

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

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

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

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

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

guest

回答1

0

自己解決

以下の追記で解決しました。
ありがとうございました。

DockerComposeYml

1services: 2 web: 3 build: 4 context: . 5 dockerfile: Dockerfile 6 ports: 7 - "3000:3000" 8 tty: true 9 command: bundle exec rails s -p 3000 -b '0.0.0.0' 10  //ここから追記 11 environment: 12 RAILS_ENV: development 13 DATABASE_URL: mysql2://root:root@mysql:3306 14  //ここまで追記 15 volumes: 16 - .:/myapp 17 depends_on: 18 - mysql 19 - chrome 20 21〜中略〜

投稿2019/07/17 11:42

jinugasachio

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問