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

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

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

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

MySQL

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

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

Q&A

解決済

【Docker × Laravel】 php artisan migrateを実行すると「Access denied for user」のエラーが出る

Kotarom_24
Kotarom_24

総合スコア25

docker-compose

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

MySQL

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

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

1回答

0グッド

1クリップ

1116閲覧

投稿2023/01/14 16:19

編集2023/01/14 16:20

前提

Docker環境でLaravelを使って開発したいのですが、コンテナ内でphp artisan migrateを実行できない原因がわからず困っています。

こちらのハンズオン形式の記事を参考にして環境構築を進めており、「マイグレーション実行(再実行)」の箇所でエラーが発生しています。(その箇所までエラーは一切起きていません)

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

dockerコンテナ内でphp artisan migrateを実行時のエラー

Illuminate\Database\QueryException SQLSTATE[HY000] [1045] Access denied for user '$DB_USERNAME'@'xx' (using password: NO) 後略
vendor/laravel/framework/src/Illuminate/Database/Connection.php:760 756▕ // If an exception occurs when attempting to run a query, we'll format the error 757▕ // message to include the bindings with SQL, which will make this exception a 758▕ // lot more helpful to the developer instead of just the database's errors. 759▕ catch (Exception $e) { ➜ 760▕ throw new QueryException( 761▕ $query, $this->prepareBindings($bindings), $e 762▕ ); 763▕ } 764▕ } +36 vendor frames 37 artisan:37 Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

該当のソースコード

docker

1db: 2 platform: linux/amd64 3 build: ./infra/mysql 4 volumes: 5 - db-store:/var/lib/mysql
DB_CONNECTION=mysql DB_HOST=db # yamlファイルの「db」に揃える DB_PORT=3306 DB_DATABASE=DB名 DB_USERNAME=Mysqlのユーザー名 DB_PASSWORD=上記ユーザーのパスワード

現状と試したこと

現状

  • コンテナは全て立ち上がっています
  • webページの表示はできていますが、DBに接続ができていません

試したこと

  • ハンズオン記事の通りに作業
  • .envの値が間違っていないか確認
  • コンテナの削除と立ち上げ直し
  • laravelのcache削除
  • mac M1用に yamlファイルの「db:」に platform: linux/amd64 を追加
  • mysqlでユーザー作成・DBの存在をチェック

エラーメッセージで調べて出てきたことは大体実行したのですが、migrateがやはりできません。
どなたかピンと来ることがあれば何でもいいので教えていただきたいです。。。

バージョンなど

  • PC: Mac M1
  • docker-compose.yaml: "3.9"
  • composer: 2.2.1
  • php: 8.1.14
  • laravel/framework: "^9.19"
  • mysql 8.0
  • nginx/1.20.2

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

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

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

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

0

ベストアンサー

根本的な間違いは「初心者が書いた変なブログを参考にしてること」
Laravelで絶対にやってはいけないことの筆頭。
初心者から見ると「ブログを書いてる人はきっとLaravelに詳しいんだろう」と勘違いするけどそんなことは全くなく「ブログを書いてるのも99%は初心者」
ベテランから見ると間違ったことばかり書いてる初心者で迷惑すぎる存在。

開発環境にDockerを使いたいなら公式のLaravel Sailを使う。これ以外は全部無視していい。
公式ドキュメト通りにlaravel.buildで新規プロジェクトを作ればそのまますぐsailが使えるように全部準備される。
DBが使えるように.envも自動で変更されるので自分で変更するような余計なことはしなくていい。
初心者が間違えるのは変なブログを見てしなくていい余計なことをするから。
https://laravel.com/docs/9.x/installation#laravel-and-docker

bash

1curl -s "https://laravel.build/example-app" | bash 2 3cd example-app 4 5./vendor/bin/sail up

大事なことはsailコマンドは「コンテナの外で実行」
コンテナ内では作業しない。

マイグレーションも「sailをコンテナ外で実行」すれば「コンテナ内のDBに反映される」

bash

1sail art migrate

投稿2023/01/15 00:44

kawax

総合スコア10168

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

Kotarom_24

2023/01/15 05:46

yamlやDockerfileを自分で書くしか環境構築はできないと思い込んでいて、laravel sailを使うという発想にすらなりませんでした。 公式ドキュメント通りに作業したところエラーは起きずmigrateの実行まで行うことができました。 ※公式を読みましょう、初心者の皆さん

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

docker-compose

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

MySQL

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

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