最近awsのcopilotを試しているんですが、たまたまバックエンドにLaravelを使ってみたので、1年半前にLaravelに触れてみようと思ったのを思い出しまた試行錯誤をしてみたいと思い立ちました。
以前に試した時はLaravel8だったんですが、Laravel9になっているんですね。。
Laravelのインストールは同じだったので前回途中だったログイン認証あたりから始めてみようかなと思います。
そしてデータベースをマイグレーションした後に…とあるのでDBも準備する必要があるのかな?
こちらの件の作業はローカルでdockerコンテナを使うのでphp8/mysql8で環境を準備してみたいと思います。
※ちなみにどちらも使ったことがありません。。。特に理由はないですがせっかくなんでmysql8は新しい方をって理由くらいです。
Laravelアプリケーションスターターキットのページを見るとどうやら新規Laravelアプリケーションの作成(済)、データベースの設定(未完)、データベースマイグレーション(未完)を実行してください。ってあるのでDBコンテナから準備します。
試しに使ってみるのでDockerfileで手を加えず公式イメージをdocker runします。
M1チップなのでarm64のイメージを使います。
docker run --name {container name} -e MYSQL_ROOT_PASSWORD={root password} -d arm64v8/mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
あとはコンテナにログインしてmysqlにログイン
CREATE DATABASE laravel;
CREATE USER 'laravel'@'%' IDENTIFIED BY 'laravel';
GRANT ALL ON laravel.* TO 'laravel';
データベースとユーザーを作ってみました。
データベースができたらLaravelのコンテナを作成し新規アプリケーションとそれにDB情報を設定します。
arm64v8/php:latestの公式イメージにcomposerとパスを通す、apt updateをしてlaravelの解答ができるようなどでunzip wget vimあたりをインストールしたコンテナを作成。
.envファイルに以下で
DB_CONNECTION=mysql(デフォ)
DB_HOST=172.17.0.3(ドッカーのコンテナIP)
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=laravel
次にLaravelのドキュメント通りmigrationをしていきます。
ドキュメントに
php artisan make:migration create_flights_table
ってあったから実行したけどこれ新規テーブル作成の時のサンプルかな?
新しくファイルができました。。
おそらくすでにあるusersなどのテーブルを認証で使うのでmigrationでDBに作成したいはず。
私がやりたいのはマイグレーションの実行のセクションです。
php artisan migrate
実行したら以下のエラーが出ました。。
Illuminate\Database\QueryException
could not find driver (SQL: select * from information_schema.tables where table_schema = laravel and table_name = migrations and table_type = 'BASE TABLE')
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:759
755▕ // If an exception occurs when attempting to run a query, we'll format the error
756▕ // message to include the bindings with SQL, which will make this exception a
757▕ // lot more helpful to the developer instead of just the database's errors.
758▕ catch (Exception $e) {
➜ 759▕ throw new QueryException(
760▕ $query, $this->prepareBindings($bindings), $e
761▕ );
762▕ }
763▕ }
+32 vendor frames
33 artisan:37
Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
ちょっと初めてのものに触って疲れたので本日はここまでにして次回調べることにします。
コメント
コメントを投稿