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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

MySQL

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

Docker

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

Circle CI

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

Q&A

1回答

770閲覧

Mysqlに接続できません

Tsuyoponta

総合スコア5

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

MySQL

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

Docker

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

Circle CI

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

0グッド

0クリップ

投稿2021/04/16 07:11

編集2021/04/17 23:06

前提・実現したいこと

オリジナルアプリ作成中です。
AWS(EC2)デプロイ後、ローカルの見た目が本番環境に反映されないため、
dockerをbuildし直したのですがエラーが出てしまいました。
実装の進捗も芳しくない中、今度はブラウザに表示までされなくなり
自分のアプリまで見れなくなるのかと絶望しています。
もし記述がおかしい箇所等があれば、ご教示いただけたら幸いです。

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

Mysql2::Error::ConnectionError Access denied for user 'root'@'172.26.0.3' (using password: YES)

該当のソースコード

database.yml

# MySQL. Versions 5.5.8 and up are supported. # # Install the MySQL driver # gem install mysql2 # # Ensure the MySQL gem is defined in your Gemfile # gem 'mysql2' # # And be sure to use new-style password hashing: # https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html # default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> host: <%= ENV['DB_HOST'] %> username: <%= ENV['DB_USERNAME'] %> password: <%= ENV['DB_PASSWORD'] %> socket: /tmp/mysql.sock development: <<: *default database: giver_development # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default database: giver_test # As with config/credentials.yml, you never want to store sensitive information, # like your database password, in your source code. If your source code is # ever seen by anyone, they now have access to your database. # # Instead, provide the password as a unix environment variable when you boot # the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database # for a full rundown on how to provide these environment variables in a # production deployment. # # On Heroku and other platform providers, you may have a full connection URL # available as an environment variable. For example: # # DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase" # # You can use this database configuration with: # # production: # url: <%= ENV['DATABASE_URL'] %> # production: <<: *default database: giver_production username: <%= ENV['DB_USERNAME'] %> password: <%= ENV['DB_PASSWORD'] %> username: root password: <%= ENV['DATABASE_PASSWORD'] %> socket: /var/lib/mysql/mysql.sock

Dockerfile

FROM ruby:2.6.5 RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \ && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs yarn WORKDIR /giver COPY Gemfile ./Gemfile COPY Gemfile.lock ./Gemfile.lock RUN gem install bundler RUN bundle install COPY . /giver COPY entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] EXPOSE 3000 CMD ["rails", "server", "-b", "0.0.0.0"]

docker-compose.yml

version: '3' services: db: image: mysql:5.6 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: root ports: - "4306:3306" #Sequel ProでDBを確認する為、4306としておく volumes: - mysql-data:/var/lib/mysql env_file: db.env web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" environment: TZ: Tokyo volumes: - .:/giver ports: - 3000:3000 depends_on: - db tty: true stdin_open: true env_file: db.env volumes: mysql-data:

試したこと

調べたところ、パスワードが誤っていて繋げられないぞ!と、言われていると思うのですが、
今まで繋がっていましたし、mysqlはパスワードを設定した記憶がありません。
以下の記事を参考にvolume削除後、buildし直しても解決に至りませんでした。
参考記事

補足情報

デプロイはCircleCIを用いてAWSのEC2へ自動デプロイを使用しております。

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

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

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

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

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

inductor

2021/04/21 02:55

db.envの中身はどうなってますか?
guest

回答1

0

dockerやdocker-composeのVer.はどうなっているでしょうか。

また、 environment:env_file: を同時に使用しているので、想定している環境変数になっているか気になります。

例えば、docker-compose up している間に docker-compose exec db bash または docker-compose exec web bash で各サービスのコンテナに入ってenvコマンドを実行するか、

docker-compose.ymlにて、各サービスに以下のように command: を追加してenvコマンド実行するように変更してdocker-compose upし、環境変数を確認してみてください。

YAML

1 : 2 db: 3 image: mysql:5.6 4 environment: 5 MYSQL_ROOT_PASSWORD: password 6 MYSQL_DATABASE: root 7 ports: 8 - "4306:3306" #Sequel ProでDBを確認する為、4306としておく 9 volumes: 10 - mysql-data:/var/lib/mysql 11 env_file: db.env 12 command: 13 - 'env' 14 :

参考

docker-composeでenv_fileとenvironmentを同時に設定する際の注意点 - Qiita

docker-composeの.envファイルの認識場所が変わった - Qiita

投稿2021/04/22 14:08

yassan

総合スコア26

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問