前提・実現したいこと
DockerでRails+MySQLの環境構築をしたいです。
発生している問題・エラーメッセージ
Mysql2::Error: Authentication plugin 'caching_sha2_password' cannot be loaded
認証方法が変わったことによるエラーと認識しています。
該当のソースコード
Dockerfile
# Railsコンテナ用Dockerfile # イメージのベースラインにRuby2.5.1を指定 FROM ruby:2.5.1 # Railsに必要なパッケージをインストール RUN apt-get update -qq && apt-get install -y build-essential nodejs # ルートディレクトリを作成 RUN mkdir /app # 作業ディレクトリを指定 WORKDIR /app # ローカルのGemfileとGemfile.lockをコピー COPY src/Gemfile /app/Gemfile COPY src/Gemfile.lock /app/Gemfile.lock # Gemのインストール実行 RUN bundle install # ローカルのsrcをコピー COPY src /app
docker-compose.yml
# docker-compose.ymlフォーマットのバージョン指定 version: '3' services: # Railsコンテナ定義 web: # Dockerfileを使用してイメージをビルド build: . # コンテナ起動時のデフォルトコマンド # ポート番号:3000 # バインドするIPアドレス:0.0.0.0 # ポート3000が来たらrailsサーバーが応答 command: bundle exec rails s -p 3000 -b '0.0.0.0' # ローカルのsrcをコンテナにマウント volumes: - ./src:/app # コンテナの外部に3000番を公開 # 公開するポート番号:コンテナ内部の転送先ポート番号 ports: - 3000:3000 # dbコンテナが先に起動するよう設定 depends_on: - db # pryを使用してデバッグができるよう設定 tty: true stdin_open: true # MySQLコンテナ定義 db: # mysqlを使用してコンテナ作成 image: mysql:8.0 volumes: # MySQL8.0のデフォルト認証形式をmysql_native_passwordに設定 - ./mysql-confd:/etc/mysql/conf.d # ローカルで保持しているDBをコンテナにマウント - db-volume:/var/lib/mysql # コンテナ内の環境変数を定義 environment: # mysqlのルートユーザーのパスワード設定 MYSQL_ROOT_PASSWORD: password # DBの内容をローカルに保持 volumes: db-volume:
database.yml
default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: password # docker-compose.ymlに設定したmysqlのルートユーザーのパスワード host: db # docker-compose.ymlに設定したMySQLコンテナ名
補足情報(FW/ツールのバージョンなど)
この記事を参考にして構築しています。
https://qiita.com/Nishi53454367/items/aee4cf0c346bc115be99
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。