M1チップMacでDocker+Laravel Step3:Laravelの導入
その2はこちらから:
M1チップMacでDocker+Laravel Step2:Dockerfileとyml
ComposerでLaravelを導入。
立ち上げたwebコンテナに新しく開いたターミナルで入ります。
kafeine@Bean-Mac web_tutorial % docker exec -it local_web bash
root@7e0fs9402a24:/var/www/html#
すでに/var/www/html
にいるので、ここでComposerを使ってLaravelプロジェクトを作りましょう。
root@7e0fs9402a24:/var/www/html# composer create-project laravel/laravel laravel-docker
laravel-docker
の部分がディレクトリ名になります。今いる/var/www/html
直下に作られます。
また、ここからはライブラリのダウンロードやインストールで時間がかかるのでしばらく待ちましょう。
Application key set successfully.
と表示されたら完了です。
また、ローカルのsrc
直下にlaravel-docker
ができていることがわかります。
apacheのドキュメントルートを変更とリライトを有効にする。
次はこのURLにアクセスしたら、Laravelのwelcomeページになるようします。
http://localhost:8080
つまり、ApacheでDocumentRoot
を
/var/www/html/laravel/public
にする必要があるので、ローカルのapache/sites-available/000-default.conf
のDocumentRoot
を変更します。
<VirtualHost *:80>
~~~ 略 ~~~
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/laravel-docker/public
~~~ 略 ~~~
</VirtualHost>
変更したらコンテナを停止し、再びdocker-compose up
をしましょう。これでまたhttp://localhost:8080
にアクセスすると、Laravelのwelcomeページが表示されようになります。
ついでにリライトも動いているか、存在しないファイルへアクセスしてみて確認します。
localhost:8080/hoge
Laravelの404ページなのでちゃんと動いてますね。
Laravelのartisanでmigrateができるようにする
Laravelは確認できましたが、DBへも接続できるように設定していきます。
実際に今の状態でmigrate
を実行すると、
root@7e0fs9402a24:/var/www/html/laravel-docker# php artisan migrate
Illuminate\Database\QueryException
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = laravel and table_name = migrations and table_type = 'BASE TABLE')
と、DBに接続を拒否されたとエラーがでます。なので、ローカルのsrc/laravel-docker/.env
ファイルにMySQLの設定をします。
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=local_db
DB_USERNAME=local_user
DB_PASSWORD=local_password
保存したら、artisan
のキャッシュをクリアします。
root@7e0fs9402a24:/var/www/html/laravel-docker# php artisan cache:clear
Application cache cleared!
root@7e0fs9402a24:/var/www/html/laravel-docker# php artisan config:clear
Configuration cache cleared!
そしたら再度、migrateをしてみます。
root@7e0fs9402a24:/var/www/html/laravel-docker# php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (98.34ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (47.64ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (48.87ms)
Migrating: 2019_12_14_000001_create_personal_access_tokens_table
Migrated: 2019_12_14_000001_create_personal_access_tokens_table (79.00ms)
migrateされました。
もしこれらのデータベースが不要な場合は、php artisan migrate:reset
で巻き戻せます。
これでDockerを使ってのLaravelの導入は完了です。
MySQLをターミナルで確認
ついでにdbコンテナもチェックしておきましょう。新たにターミナルを開き、
kafeine@Bean-Mac web_tutorial % docker exec -it local_db bash
root@376e3b3ad241:/#
のコマンドでコンテナに入ります。ここではすでにMySQLが入っているので、
root@376e3b3ad241:/# mysql -u local_user -h db -p
これでパスワードを入力すれば入れます。試しに先ほどLaravelでmigrate
したテーブルを確認してみましょう。
mysql> use local_db
データベースを選択して、SHOW TABLES;
します。
mysql> SHOW tables;
+------------------------+
| Tables_in_local_db |
+------------------------+
| failed_jobs |
| migrations |
| password_resets |
| personal_access_tokens |
| users |
+------------------------+
5 rows in set (0.01 sec)
問題なく作られてますね。
以上がDockerでLaravelを導入する方法でした。
Discussion