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

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

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

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

Ruby on Rails 6

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

MySQL

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

Ruby on Rails

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

Docker

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

Q&A

解決済

1回答

514閲覧

docker-compose + rails6 + mysql でdbに接続する方法を教えてください

hase744

総合スコア57

docker-compose

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

Ruby on Rails 6

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

MySQL

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

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2023/04/09 10:49

実現したいこと

既存のrailsに

files

1AppName ---- Dockerfile 2                 |-- docker-compose.yml

のようにdocker関連のfileを配置しました
その後docker-compose + rails + mysql に接続したいです

前提

rails -v 6.1.4.4
mysql -v 8.0.32

docker-compose build
docker-compose up
はできrailsを作動させることには成功しています
しかしmysqlに接続できません
dockerなしでrailsの接続は成功しています

docker-compose.yml

yml

1version: '3' 2services: 3 db: 4 image: mysql:8.0 5 command: --default-authentication-plugin=mysql_native_password 6 volumes: 7 - ./mysql/mysql_data:/var/lib/mysql 8 - ./logs:/var/log/mysql 9 - ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf 10 11 environment: 12 MYSQL_DATABASE: share_gpt_development 13 MYSQL_ROOT_PASSWORD: 14 web: 15 build: . 16 command: bundle exec rails s -p 3000 -b '0.0.0.0' 17 volumes: 18 - ./src:/app 19 ports: 20 - "3000:3000" 21 environment: 22 RAILS_ENV: development 23 depends_on: 24 - db

Dockerfile

Dockerfile

1#Docker Image を指定します。使用しているアプリのバージョンを指定します。 2FROM ruby:3.0.2 3 4RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - && apt-get update && apt-get install -y nodejs --no-install-recommends && rm -rf /var/lib/apt/lists/* 5RUN apt-get update && rm -rf /var/lib/apt/lists/* 6 7# 作業ディレクトリの作成、設定 8RUN mkdir /workdir 9WORKDIR /workdir 10 11# ホスト側(ローカル)のGemfileを上記で作成した/workdirに追加する 12ADD Gemfile /workdir/Gemfile 13ADD Gemfile.lock /workdir/Gemfile.lock 14 15# Gemfileのbundle install  16# ENVなしで実行したところエラーが出た。BUNDLER_VERSIONを指定することで回避。 17ENV BUNDLER_VERSION 2.3.9 18RUN gem install bundler 19RUN bundle install 20 21# ホスト側(ローカル)の全てのディレクトリをDocekrコンテナの/workdir配下に追加。 22ADD . /workdir 23

database.yml

yml

1# MySQL. Versions 5.5.8 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: utf8mb4 15 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 16 username: root 17 password: 18 socket: /tmp/mysql.sock 19 20development: 21 <<: *default 22 database: share_gpt_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: share_gpt_test 30 31# As with config/credentials.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 or a full connection URL as an environment 36# variable when you boot the app. For example: 37# 38# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase" 39# 40# If the connection URL is provided in the special DATABASE_URL environment 41# variable, Rails will automatically merge its configuration values on top of 42# the values provided in this file. Alternatively, you can specify a connection 43# URL environment variable explicitly: 44# 45# production: 46# url: <%= ENV['MY_APP_DATABASE_URL'] %> 47# 48# Read https://guides.rubyonrails.org/configuring.html#configuring-a-database 49# for a full overview on how database connection configuration can be specified. 50# 51production: 52 <<: *default 53 database: share_gpt_production 54 username: root 55 password: <%= ENV['DATABASE_PASSWORD'] %> 56 socket: /var/lib/mysql/mysql.sock 57

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

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

考えられる原因などが分かりましたら教えてください

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

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

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

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

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

guest

回答1

0

ベストアンサー

/tmp/mysql.sockのようなUnixドメインソケットは、ローカルホスト専用です。

host:にホスト名を指定してください。

投稿2023/04/09 12:10

maisumakun

総合スコア145183

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

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

hase744

2023/04/13 12:13

できました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問